Eu preciso obter o número da linha que possui o maior valor

3

Eu tenho um arquivo txt como segue

 1  8.92
 2  9.99
 3  9.57
 4  9.63
 5  9.57
 6  9.51
 7  7.84
 8  7.95
 9  9.44
10  9.58
11  9.94
12  10.20
13  9.35

Eu preciso do número da linha com o maior valor. Como posso conseguir isso? por exemplo. a resposta para esses dados será

12 10.20

    
por user210915 17.01.2017 / 13:44

3 respostas

1

Depois de copiar e colar seu exemplo, eu fiz isso com:

sort -k2 -nr filename.txt | head -1
    
por 17.01.2017 / 13:49
3

Para evitar a classificação, você pode:

awk 'NR == 1 || $2 > max {number = $1; max = $2}
     END {if (NR) print number, max}' < file

ou se a entrada contiver apenas uma coluna e você quiser saber o número da linha que tem o valor máximo:

awk 'NR == 1 || $1 > max {number = NR; max = $1}
     END {if (NR) print number, max}' < file
    
por 17.01.2017 / 15:28
0

Eu fiz isso com sort -rn -k2 test , onde test é o nome do arquivo que contém seus dados de exemplo.

12 10.20
7 7.84
8 7.95
1 8.92
13 9.35
9 9.44
6 9.51
3 9.57
5 9.57
10 9.58
4 9.63
11 9.94
2 9.99

E você pode obter o número da linha com:

sort -rn -k2 test | awk '{print $2}' | grep $(head -1) -n test

saída:

12:12 10.20
    
por 17.01.2017 / 13:50

Tags