次の入力ファイルの場合、同じ最後のフィールドの最高レコードをどのように取得できますかawk
?NF
文書:
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