1

我的 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),因为它是列中的行旁边有两个更高的值。

4

1 回答 1

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
于 2013-04-11T17:26:11.407 回答