De acordo com suas amostras de dados em sua pergunta, isso parece ser o que você quer (caso contrário, esclarecer sua dúvida, por favor):
awk '$5 > max { max = $5 ; out = $0 } END { print out }' datafile
Isto irá imprimir essa linha no arquivo de dados, onde o valor na quinta coluna é o máximo.
O programa funciona da seguinte maneira: Para cada linha, o quinto elemento da coluna será comparado com o máximo armazenado max
(que é inicialmente 0), e se um valor maior for encontrado max
recebe esse valor (para subsequente comparações) e a linha atual ( $0
) contendo o máximo é armazenada na variável out
. Como a ação final do programa, o valor da variável out
será impresso.
Caso você tenha apenas valores menores que zero em seus dados, você precisará (por causa da inicialização implícita de max
com zero) alguma extensão; muitas vezes é suficiente inicializar explicitamente a variável max
com um valor conhecido por ser inferior aos valores nos seus dados, por ex. usando BEGIN { max = -999999 }
, mas você também pode usar um padrão de código genérico da seguinte forma:
awk '(max==0 && max=="") || $5 > max { max = $5 ; out = $0 } END { print out }' datafile
Leia a parte (max==0 && max=="")
da condição como: "O max
ainda está indefinido?" (ou seja, ainda não é atribuído um valor).