使用sed从csv文件中删除多行

3
我正在学习如何使用命令行处理csv文件。我想使用sed从文件中删除多行内容。我已经通过cat file.csv | sed 1,2d > file.csv的方式去除了文件头。
现在我还想删除更多行(第3、10、12和28-35行),但不确定如何操作。感激任何帮助。
2个回答

4

根据sed实现的不同,你可以将它们分开如下:

cat file.csv | sed "1,2d;10d;12d;28,35d" > file2.csv

我遇到了错误:-bash: 10d: command not found,同样的错误也出现在 12d28,35d 上。和之前一样,1,2d 是可以正常工作的。这是不是因为 CSV 文件的结构有问题呢? - Jeff Severns Guntzel
文件不会是原因。我的例子可能并非在所有情况下都有效。我在Windows上运行它,可能是一个不完全兼容的sed版本。我明天需要进行更多测试。对于错误的线索,我很抱歉。 - Mark Wilkins
有些sed不支持分号,可以多次使用“-e”标志。 - glenn jackman
1
@Jeff:这可能并不比通过“-e”使用多个命令更好,但引用脚本似乎可以使其工作。 - Mark Wilkins
如果您从bash中收到错误信息,那很可能是因为您忘记使用引号 - 它会认为“;”开始了一个新的命令并尝试运行10d命令。 - Ian Bicking

2

使用-e标志将多个命令传递给一个sed调用,如下所示:

seq 1 40 | sed -e 1,2d -e 3d -e 10d -e 12d -e 28,35d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接