Awk
如果大於 12 次,如何列印重複記錄?
如何使用 awk 列印重複超過 12 次的重複記錄。
輸入:
1|abc123 2|abc123 3|abc123 4|abc123 5|abc123 6|abc123 7|abc123 8|abc123 9|abc123 10|abc123 11|abc123 12|abc123 13|cde456 14|xyz321 15|jkl245 16|abc123 17|abc123 18|abc123 19|def567 20|abc123
預期輸出:
1|abc123 2|abc123 3|abc123 4|abc123 5|abc123 6|abc123 7|abc123 8|abc123 9|abc123 10|abc123 11|abc123 12|abc123 15|abc123 16|abc123 17|abc123 18|abc123 20|abc123
我嘗試了以下命令,但沒有得到準確的輸出。
awk -F'|' 'NR==FNR{cnt[$2]++; next} cnt[$2]>12' input > output
如果您雙重解析文件,您的命令會很好,例如:
awk -F'|' 'FNR==NR{c[$2]++;next} c[$2]>12' input input > output
在第一次通過時,您計算出現次數,在第二次通過時,您僅列印
c>12
. 它還具有記憶體效率。也尊重原始文件的行順序。如果您願意,您可以輕鬆地執行任何排序。順便說一句,您目前的輸入範例中沒有出現超過 12 次的行。
abc123
出現的正是12
時候。此外,在這些事件之一中還有一個尾隨空格7|abc123
,這意味著不同的第二個欄位。