如何从包含搜索词完全匹配的CSV文件中删除所有行?

时间:2012-04-18 11:16:05

标签: bash sed awk

我有一个像这样的CSV文件:

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

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

more text,2
some more text,100

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

4 个答案:

答案 0 :(得分:5)

如果这是你的最后一个字段,那么grep会做到这一点:

grep -v ',0$'

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

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

如果它更复杂,可以使用CSV解析器使用python或ruby。

答案 1 :(得分:3)

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

sed /,0$/d

答案 2 :(得分: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

答案 3 :(得分:2)

这可能对您有用:

awk -F, '$2' file