Isso deve funcionar:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
O -v max=0
define a variável max
to 0
e, para cada linha, o primeiro campo é comparado ao valor atual de max
. Se for maior, max
é definido para o valor do primeiro campo e want
é definido para a linha atual. Quando o programa processa o arquivo inteiro, o valor atual de want
é impresso.
Editar
Eu não testei a solução awk
antes e foi muito ruim tê-la fornecido. De qualquer forma, a versão editada da resposta deve funcionar (Obrigado ao terdon por corrigi-la) e eu testei o abaixo também.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Estou sort
ing no primeiro campo em que
- -n especifica classificação numérica.
- -r especifica reverter o resultado da classificação.
- -k1,1 especifica o primeiro campo para a classificação ocorrer.
Agora, após a classificação, estou direcionando a saída e obtendo apenas o primeiro resultado, o que me dará o valor numericamente mais alto de column1 no resultado.
Agora, finalmente canalizo para cut
com o delimitador especificado como espaço e imprimindo o -f3
que é a saída pretendida.
Teste
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
Agora, depois de executar o comando acima para a entrada como acima, obtenho a saída como
/Max/number