我将这一行放入我的bash脚本中。
#Trying to find the FIRST maximum in the column $10
awk 'BEGIN{max=0} {if($10>=max){max=$10} else{exit}} END{print NR}'
它有效。
但我需要更复杂的东西(出于其他目的)。我需要awk检查下一行和前一行值是否高于实际值(如下所示):
awk 'BEGIN{max=0} {if($10[NR]>=max && $10[NR-1]>=$10[NR] && $10[NR+1]>=$10[NR] ){max=$10} else{exit}} END{print NR}'
但它不起作用,可能是因为我不知道如何处理列中的位置。你能帮帮我吗?
澄清:
我只想完全读取一列(第10列),找到上一行和下一行中值较高的行号。例如,如果列具有值1,2,3,4,1,2然后我想得到行号“5”(对应于数据中的第二个1),因为它是列中的行旁边有两个更高的值。
答案 0 :(得分:1)
awk '{ if ($10 > old1 && old1 < old2) print NR-1; old2 = old1; old1 = $10; }'
为了测试,我将$10
替换为$1
。运行此数据:
1
2
3
4
3
4
5
4
3
2
1
2
3
4
5
4
5
4
3
2
1
它产生这个输出:
5
11
16