我的CSV文件由制表符分隔,我想过滤掉那些包含0值的所有条目(16列)的行。我现在正在做这个
awk '$1 != 0 && $2 != 0 && ....omitted && $16 != 0 {print $0}' file.csv > newFile.csv
正如您所看到的,为所有16列输入相同的条件是非常累人的。有没有更简单的方法?
答案 0 :(得分:5)
像
这样的东西grep -Ev '^0+([[:space:]]+0+){15}$' file.csv
或
awk --posix '!/^0+([[:space:]]+0+){15}/'
答案 1 :(得分:4)
这样的事情怎么样(假设你有16个字段)
awk '{for (i=1; i<=16; ++i) if($i != 0) {print;next}}' file.csv > newFile.csv
答案 2 :(得分:3)
sed也可以这样做:
sed -n '/[^0\t]/p' file.csv
只有当字符与0
和\t
(制表符)不同时,此命令才会打印该行。或者你也可以这样做:
sed '/[^0\t]/!d' file.csv
删除所有没有(!
)的行与正则表达式[^0\t]
匹配。