我的文件包含36列(制表符分隔),前4列包含名称和标识信息,其余32列包含浮点数(double或0)。我想过滤掉最后32列中有0个值的行(也在输出文件中以制表符分隔)。
我正在考虑使用它:
if ($5 != 0 && $6 !=0 && ..... $36 != 0) {print $0}
但这看起来很丑陋,我认为效率并不高,因为if语句中有32个条件。有没有有效的方法来完成工作?谢谢
答案 0 :(得分:3)
使用for
循环:
awk '{ for (i=5; i<=NF; i++) { if ($i != 0) { print; next } } }' infile
答案 1 :(得分:0)
以下是您的简短awk
。
awk '/[[:space:]].*[1-9]/' file