Это должно работать:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
В -v max=0
устанавливает переменную , max
чтобы 0
, таким образом , для каждой строки, первое поле сравнивается с текущим значением max
. Если оно больше, max
устанавливается значение 1-го поля и want
текущая строка. Когда программа обработает весь файл, want
будет напечатано текущее значение .
редактировать
Я не тестировал awk
решение ранее, и было действительно плохо, когда я его предоставил. В любом случае, отредактированная версия ответа должна работать (спасибо Тердону за исправление), и я также проверил нижеприведенное.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Я нахожусь sort
на первом поле, где,
- -n указывает числовую сортировку.
- -r указывает обратный результат сортировки.
- -k1,1 указывает первое поле для сортировки.
Теперь, после сортировки, я передаю результаты и просто получаю первый результат, который даст мне самое высокое значение столбца1 в результате.
Теперь я, наконец, передаю его cut
с разделителем, указанным в качестве пробела, и печатаю тот, -f3
который предназначен для вывода.
тестирование
cat filename
112030 /opt/oracle/app/oracle/product/11.2.0
121010 /opt/oracle/app/oracle/product/12.1.0
2312 /hello/some/other/path
3423232 /this/is/really/big/number
342 /ok/not/the/maximum/number
9999899 /Max/number
9767 /average/number
Теперь, после того как я выполнил приведенную выше команду для ввода, как указано выше, я получаю вывод как,
/Max/number
Вы можете сделать это с
AWK
.Здесь первый столбец каждой строки сравнивается с переменной
max
(которая изначально равна 0). Если первый столбец имеет значение greated,max
то второй столбец сохраняется в переменнойline
, это продолжается для каждой строки файла.В конце файла
END
выполняется правило для печатиline
переменной.источник
источник
sort -k1 -n filename | tail -1 | awk '{print $2}'
источник
Просто вы можете отсортировать его с помощью
sort
командыВыход:
источник
cat
, сортировка может принимать входные файлы напрямую.источник