min и max в определенных строках входного файла с тегом номера строки - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу найти минимум между строкой 2000 и 3000.

Я хочу найти минимум и максимум значений, и когда найдены минимум и максимум, мне также нужно найти строкуна котором это было найдено.Затем я хочу перейти на одну строку выше максимальной или минимальной содержащей строки и вывести первое целое число из 6 целых чисел в той же строке.

Мой ввод имеет следующую форму.

*KEYWORD
$TIME_VALUE = 1.4000002e+001
$STATE_NO = 15
$Output for State 15 at time = 14
*ELEMENT_SHELL_THICKNESS
1346995      25 1457683 1471891 1457727 1471929
9.953265e-001   9.953265e-001   9.953265e-001   9.953265e-001
1346996      25 1471891 1457685 1471930 1457727
9.953963e-001   9.953963e-001   9.953963e-001   9.953963e-001
1346997      25 1457685 1471892 1471931 1471930
9.953437e-001   9.953437e-001   9.953437e-001   9.953437e-001

так что вывод может быть

min=9.953265e-001  on line  07   at  1346995
max=9.953963e-001  on line  09   at  1346996

PS: я могу найти минимальное и максимальное значения массива, но мне сложно работать с этим вводом.в ожидании экспертного предложения.

1 Ответ

0 голосов
/ 13 февраля 2012

Я не понимаю требования между строкой 2000 и 3000, но если в вашем примере между строкой 6 и 11:

cat your_file | awk '
  NR >= 6 && NR <= 11{at=$1;getline
    if (max < $1){max=$1;max_line=NR;max_at=at}
    if (min > $1){min=$1;min_line=NR;min_at=at}}
  NR == 7{min=$1;min_line=NR;min_at=at}
  END{
    printf "min=%-13e on line  %02d at %8d\n", min, min_line, min_at
    printf "max=%-13e on line  %02d at %8d\n", max, max_line, max_at}'

И максимум не будет в строке 9?

(Всем, пожалуйста, не пользуйтесь кошкой без меня, я нахожу это более понятным; -).)

...