Text-Processing
使用 awk 比較 2 行
輸入
aaaaa|bbbbb|ccccc|ddddd|5|5|4 aaaaa|bbbbb|ccccc|ddddd|10|10|1 wwwww|xxxxx|yyyyy|zzzzz|5|5|2 wwwww|xxxxx|yyyyy|zzzzz|10|10|2
輸出
aaaaa|bbbbb|ccccc|ddddd|5|5| wwwww|xxxxx|yyyyy|zzzzz|10|10|
用於索引的有:
第 1 到第 4 列(例如 aaaaa | bbbbb | ccccc | ddddd)
輸出邏輯如下:
- 比較具有相同索引的記錄的最後一列,具有較高最後一列值的記錄將列印到輸出。
- 比較具有相同索引的記錄的最後一列,如果它們相等,則將第 5 列和第 6 列的值較大的記錄列印到輸出。
您可以簡單地使用
sort
ing 相應地執行此操作,然後為每個組選擇第一個條目。sort filename -t'|' -k1,4 -k7rn -k5,6rn | sort -t'|' -k1,4 -u
結果:
aaaaa|bbbbb|ccccc|ddddd|5|5|4 wwwww|xxxxx|yyyyy|zzzzz|10|10|2
這是做什麼的
-t'|'
將欄位分隔符設置為|
-k1,4
按前 4 個欄位排序-k7rn
然後通過反向和數字比較的第七個欄位-k5,6rn
然後與第五和第六場相同|
將其傳遞給另一種類型-k1,4 -u
-u
表示前 4 個欄位的唯一性所以整個操作就像按照你的意願對文件進行排序,以便你想要的行首先顯示在前 4 個欄位的組中。然後只需抓住每組的第一行。