【发布时间】:2023-03-08 12:58:01
【问题描述】:
我有一个 csv 文件,我想使用 unix sed 命令从中删除第二行。
file.csv 如下所示
a
b
c
d
所以它变成了 newfile.csv
a
c
d
根据我对解决方案的搜索,最简单的方法似乎是使用以下 sed 命令;
sed '2d' file.csv > newfile.csv
然而,newfile.csv 包含已删除的行
d
,不是预期的
a
c
d
我在 macOS Mojave 上使用 iTerm2
【问题讨论】:
-
file.csv 是否有可能具有 DOS 行尾 (CRLF)?执行
cat -e file.csv并确保在$s 之前看不到任何^M字符。 -
你是对的。有这样的字符
-
dos2unix file.csv && sed '2d' file.csv > newfile.csv -
我使用过 dos2unix 但没有删除它。我将尝试手动删除它们。实际上,该文件是 mac csv 格式,这导致了问题。通过用普通的 csv 保存它,问题得到解决并且代码工作。谢谢
-
你可以使用 sed 删除那些字符,但是有点棘手。