我有一个这样的 CSV 文件:
text,0
more text,2
some more text,100
我需要删除仅包含0
在第二列中的任何行,例如,上面的输出将是:
more text,2
some more text,100
如何从 CSV 中删除完全匹配的所有行?
如果这是您的最后一个字段,则 grep 可以解决问题:
grep -v ',0$'
如果没有,并且您的字段不包含,
,请使用 awk:
awk -F , '{if ($2!='0') print}'
如果它更复杂,请使用带有 CSV 解析器的 python 或 ruby。
一个简单的 sed 解决方案...
sed /,0$/d
如果您想对文件进行内联编辑,可以尝试以下操作。请记住在尝试任何内联编辑之前备份您的文件。(将删除包含匹配项的行)
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
这可能对您有用:
awk -F, '$2' file