To powinno działać:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
Do -v max=0
ustawia zmienną max
do 0
, a następnie dla każdej linii, pierwsze pole jest porównywana z wartością bieżącą max
. Jeśli jest większa, max
jest ustawiona na wartość pierwszego pola i want
na bieżącą linię. Gdy program przetworzy cały plik, want
drukowana jest bieżąca wartość parametru .
Edytować
Nie testowałem awk
wcześniej rozwiązania i naprawdę było mi bardzo źle, że je dostarczyłem. W każdym razie edytowana wersja odpowiedzi powinna działać (dzięki terdon za naprawienie) i przetestowałem również poniższe.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Jestem sort
na pierwszym polu, gdzie
- -n określa sortowanie numeryczne.
- -r określa odwrotny wynik sortowania.
- -k1,1 określa pierwsze pole do przeprowadzenia sortowania.
Teraz, po posortowaniu, przesyłam dane wyjściowe i po prostu otrzymuję pierwszy wynik, który da mi najwyższą liczbowo wartość kolumny 1 w wyniku.
Teraz w końcu podłączam do niego rurkę cut
z ogranicznikiem określonym jako spację i wypisuję -f3
zamierzony wynik.
Testowanie
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
Teraz, po uruchomieniu powyższej komendy dla danych wejściowych jak powyżej, otrzymuję dane wyjściowe jako,
/Max/number