使用awk查找包含指定数字之上和之下的值的所有列?

时间:2018-06-09 17:55:39

标签: awk

我想要一个Awk命令,我可以在一个大文件中搜索包含低于3 高于5 的数字的列。它还需要跳过第一列。

e.g。对于以下文件

   1 2 6 2
   2 1 7 3
   3 2 5 4
   4 2 8 7
   5 2 6 8
   6 1 9 9

在这种情况下,只有第4列是匹配的,因为它是唯一一个值大于5且小于3的列(除了第1列,我们跳过)。

目前,我有这段代码:

 awk '{for (i=2; i<=NF; i++) {if ($i < 3 && $i > 5) {print i}}}'

但这只能一次读取一行(因此永远不会匹配)。我想搜索所有行,但我无法弄清楚这是如何完成的。

理想情况下,输出只是列号。因此,对于此示例,只需“4”。

非常感谢。

1 个答案:

答案 0 :(得分:1)

请您试着跟随并告诉我这是否对您有帮助。

[Syntax Error] line 0, col 54: Error: Expected end of string, got 'f'

如果您想从第二列开始搜索,请在上面的代码中将awk '{for(i=1;i<=NF;i++){if($i<3){col[i]++};if($i>5){col1[i]++}}} END{for(j in col){if(col[j]>=1 && col1[j]>=1){print j}}}' Input_file 更改为i=1

编辑: 现在也添加一种非单一形式的解决方案。

i=2