使用AWK过滤具有0值的文件

时间:2013-09-23 21:01:38

标签: filter awk

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

我正在考虑使用它:

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

但这看起来很丑陋,我认为效率并不高,因为if语句中有32个条件。有没有有效的方法来完成工作?谢谢

2 个答案:

答案 0 :(得分:3)

使用for循环:

awk '{ for (i=5; i<=NF; i++) { if ($i != 0) { print; next } } }' infile

答案 1 :(得分:0)

以下是您的简短awk

awk '/[[:space:]].*[1-9]/' file