Найти минимум для гистограммы - PullRequest
1 голос
/ 17 февраля 2012

У меня есть простая гистограмма, подобная этой:

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 ]

2 голосов
/ 17 февраля 2012
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 голос
/ 18 февраля 2012

Это может работать для вас:

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
1 голос
/ 18 февраля 2012
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}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...