找到直方图的最小值

时间:2012-02-17 19:21:37

标签: linux shell sed awk

我有一个像这样的简单直方图:

1.5 1.34
2.5 5.23
3.5 7.34
4.5 4.23
5.5 3.23
6.5 2.22
7.5 1.94
8.5 5.43
9.5 9.13

我需要在第一个最大值之后找到第二列的最小值,并打印出第一个列的相应值。所以我应该得到这个输出:

7.5 1.94

有人能为此提出一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

awk 'NR == 1 {mx=$1;my=$2}
   $2 < my {mx=$1;my=$2}
   $2 == my && $1 > mx {mx=$1;my=$2}
   END{print mx " " my}'

答案 1 :(得分:1)

awk 'NR == 1 {my=$2;max_found=0}
  !max_found && $2 > my {my=$2}
  !max_found && $2 < my {mx=$1;my=$2;max_found=1}
  max_found && $2 < my {mx=$1;my=$2}
  max_found && $2 > my {exit}
  END{print mx " " my}'

答案 2 :(得分:1)

这可能对您有用:

sort -k2,2n file | awk 'NR<2{max=$1} FNR<NR && $2>=max{print;exit}' file -

或者这个:

 awk 'NR<2{max=$1}$2<max{next}min==0{line=$0;min=$2}$2<min{line=$0;min=$2}END{print line}' file