4

我有一个这样的 CSV 文件:

text,0
more text,2
some more text,100

我需要删除仅包含0在第二列中的任何行,例如,上面的输出将是:

more text,2
some more text,100

如何从 CSV 中删除完全匹配的所有行?

4

4 回答 4

5

如果这是您的最后一个字段,则 grep 可以解决问题:

grep -v ',0$'

如果没有,并且您的字段不包含,,请使用 awk:

awk -F , '{if ($2!='0') print}'

如果它更复杂,请使用带有 CSV 解析器的 python 或 ruby​​。

于 2012-04-18T11:17:47.937 回答
3

一个简单的 sed 解决方案...

sed /,0$/d
于 2012-04-18T14:28:34.917 回答
2

如果您想对文件进行内联编辑,可以尝试以下操作。请记住在尝试任何内联编辑之前备份您的文件。(将删除包含匹配项的行)

sed -i "s/.*match.*//g" /yourfile.csv

删除文件中的任何空白行。(记住在尝试任何内联编辑之前备份您的文件。)

sed -i "/^$/d" /yourfile.csv

对于 OS X,您可以尝试以下操作(记住在尝试任何内联编辑之前备份您的文件。)

sed -i '' "s/.*match.*//g" /yourfile.csv
sed -i '' "/^$/d" /yourfile.csv
于 2012-04-18T12:00:22.570 回答
2

这可能对您有用:

awk -F, '$2' file
于 2012-04-18T12:59:03.137 回答