Registro da maior NF

2

Usando awk para o arquivo de entrada a seguir, como posso obter o registro com o maior NF para o mesmo último campo.

Arquivo:

5541,55004,919843,IND
5542,5541,55004,919843,IND
7903,790287,RUSE
7905,7903,790287,RUSE

Resultado necessário:

5542,5541,55004,919843,IND
7905,7903,790287,RUSE
    
por Eng7 11.11.2016 / 17:58

1 resposta

3

Você pode aproveitar dois arrays, um para manter o número de campos e um para manter todo o registro, e o loop sobre o segundo array no END :

awk -F, 'NF>a[$NF] {a[$NF]=NF; b[$NF]=$0} END{for (i in b) print b[i]}' file.txt

Exemplo:

% cat file.txt 
5541,55004,919843,IND
5542,5541,55004,919843,IND
7903,790287,RUSE
7905,7903,790287,RUSE

% awk -F, 'NF>a[$NF] {a[$NF]=NF; b[$NF]=$0} END{for (i in b) print b[i]}' file.txt
5542,5541,55004,919843,IND
7905,7903,790287,RUSE
    
por 11.11.2016 / 18:07