Isso deve funcionar:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
Os -v max=0
conjuntos da variável max
para 0
, em seguida, para cada linha, o primeiro campo é comparado com o valor corrente de max
. Se for maior, max
é definido como o valor do 1º campo e want
é definido como a linha atual. Quando o programa processa o arquivo inteiro, o valor atual de want
é impresso.
Editar
Eu não testei a awk
solução anteriormente e foi realmente ruim ter 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
no primeiro campo em que,
- -n especifica a 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 canalizando a saída e obtendo o primeiro resultado, o que me dará o valor numericamente mais alto da coluna1 no resultado.
Agora, finalmente conecto-o ao cut
delimitador especificado como espaço e imprimo 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, recebo a saída como,
/Max/number
Você pode fazer isso com
AWK
.Aqui, a primeira coluna de cada linha é comparada com a variável
max
(que é inicialmente 0). Se a primeira coluna tiver um valor que, emmax
seguida, a segunda coluna será armazenada na variávelline
, isso continuará para cada linha do arquivo.No final do arquivo, a
END
regra é executada para imprimir aline
variável.fonte
fonte
sort -k1 -n filename | tail -1 | awk '{print $2}'
fonte
Simplesmente você pode classificá-lo usando o
sort
comandoResultado:
fonte
cat
, a classificação pode levar os arquivos de entrada diretamente.fonte