1

我的文件包含 36 列(制表符分隔),前 4 列包含名称和标识信息,其余 32 列包含浮点数(双精度或 0)。我想过滤掉最后 32 列中具有 0 值的行(也在输出文件中以制表符分隔)。

我正在考虑使用这个:

if ($5 != 0 && $6 !=0 && ..... $36 != 0) {print $0}

但这看起来很丑陋,考虑到 if 语句中有 32 个条件,我想效率并不高。有没有什么有效的方法来完成工作?谢谢你

4

2 回答 2

3

使用for循环:

awk '{ for (i=5; i<=NF; i++) { if ($i != 0) { print; next } } }' infile
于 2013-09-23T21:05:33.110 回答
0

这是一个简短awk的给你。

awk '/[[:space:]].*[1-9]/' file
于 2013-09-24T12:04:18.457 回答