使用awk打印输出行的值大于1

时间:2015-07-08 02:58:41

标签: bash awk

我试图在一个文件中提取数据,其中任何一行中的值都大于1.您是否知道有任何简单的方法可以做到这一点?

awk -F"\t" '{if(($3>1)||($4>1)||($5>1)||($6>1)||($7>1)||($8>1)||($9>1)||($10>1)||($11>1)||($12>1)||($13>1)||($14>1)||($15>1)||($16>1)||($17>1)||($18>1))print$0}' file1.txt > file2.txt

2 个答案:

答案 0 :(得分:4)

你可以在awk中使用for循环,而不是写出这么多条件:

awk -F"\t" '{for(i=3; i<=18; i++){if($i>1){print $0; next;}}}' filename

如果您希望与3到最后一列的列进行合作,请在循环条件中使用NF代替18

答案 1 :(得分:1)

awk -F'\t' '{f=0; for (i=3;i<=18;i++) if ($i>1) f=1} f' file1.txt