我想要一个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”。
非常感谢。
答案 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