Linux
根據匹配重複條件查找重複行數
基本上我在 linux 伺服器上有一個大的文本文件,我想只根據前 6 位數字計算重複項:
輸入:
1111110000000222982 112114 1111119292828 11101110 112114
輸出:
111111 (2) 112114 (2)
處理這種情況的最佳解決方案是什麼?
awk ' {a[substr($0,1,6)]++} END {for (i in a) {if (a[i] > 1) printf "%s (%d)\n", i, a[i]}} ' file 111111 (2) 112114 (2)
通過一些
uniq
實現,您可以執行以下操作:$ <file cut -c-6 | sort | uniq -cd 2 111111 2 112114
並非所有實現都支持將
-c
(計數)與-d
(僅輸出重複項)組合。在那些不這樣做的情況下,您可以使用
uniq -c
和管道到awk '$1 > 1'
,或者執行整個操作awk
來節省您的排序(但是如果有很多唯一的字元串,則可能會使用大量記憶體(儘管這裡是最多只有 100 萬個不同的 6 個字元串,這不是很多))