Это должно работать:
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
раньше, и мне было очень плохо, что я его предоставил. В любом случае, отредактированная версия ответа должна работать (спасибо terdon за ее исправление), и я также протестировал приведенный ниже.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Я использую sort
в первом поле, где
Теперь, после сортировки, я передаю вывод по конвейеру и получаю только первый результат, который даст мне самое большое числовое значение для столбца 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