我有一个像这样的CSV文件:
text,0
more text,2
some more text,100
我需要删除第二列中仅包含0
的任何行,例如,上面的输出将是:
more text,2
some more text,100
如何从完全匹配的CSV中删除所有行?
答案 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