NF最高記録

NF最高記録

次の入力ファイルの場合、同じ最後のフィールドの最高レコードをどのように取得できますかawkNF

文書:

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

希望の出力:

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

答え1

2つの配列を使用すると、1つはフィールド数を保持し、もう1つはレコード全体を保持し、2番目の配列を繰り返すことができますEND

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

例:

% 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

関連情報