Text-Processing

最高NF記錄

  • January 13, 2017

使用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

您可以利用兩個數組,一個用於保留欄位數,一個用於保留整個記錄,並在第二個數組上循環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

引用自:https://unix.stackexchange.com/questions/322639