如何打印包含列最大值的行中的下一个值?

如何打印包含列最大值的行中的下一个值?

如何打印包含列最大值的行中的下一个值?

for f in a*; do 
    awk 'BEGIN{a=   0}{if ($2>0+a) a=$2}{if($2 = a) b=$1} END{print FILENAME, b}' "$f"
done

A*

4 5
6 6
5 5.5
7 55

期望的结果

a45 7 

答案1

根据您是否希望为重复的关键字段打印第一个值或最后一个值,执行此操作的正确方法是打印最后一个值:

awk 'NR==1{max=$2} $2>=max{max=$2; val=$1} END{print FILENAME, val}' "$f"

或打印第一个:

awk 'NR==1{max=$2; val=$1} $2>max{max=$2; val=$1} END{print FILENAME, val}' "$f"

相关内容