Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的文件包含 36 列(制表符分隔),前 4 列包含名称和标识信息,其余 32 列包含浮点数(双精度或 0)。我想过滤掉最后 32 列中具有 0 值的行(也在输出文件中以制表符分隔)。
我正在考虑使用这个:
if ($5 != 0 && $6 !=0 && ..... $36 != 0) {print $0}
但这看起来很丑陋,考虑到 if 语句中有 32 个条件,我想效率并不高。有没有什么有效的方法来完成工作?谢谢你
使用for循环:
for
awk '{ for (i=5; i<=NF; i++) { if ($i != 0) { print; next } } }' infile
这是一个简短awk的给你。
awk
awk '/[[:space:]].*[1-9]/' file