2012-02-03 112 views
2

我想刪除文件中的重複條目。該文件如下所示:Shell腳本從文件中刪除重複條目

xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd3:mE7YHNejLCviM:cvsabc 
xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd4:kQiRgQTU20Y0I:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd4:kQiRgQTU20Y0I:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 

如何通過使用shell腳本從該文件中刪除重複項?

回答

4

從分類手冊頁:

-u,--unique 用-c,檢查是否有嚴格的順序;沒有-c,只輸出第一相等的運行

sort -u yourFile 

應該做的。

2

如果你不想改變輸入文件的順序,你可以這樣做:

 
$ awk '!v[$0]{ print; v[$0]=1 }' input-file 

或者,如果文件足夠小(小於4條十億線,以確保沒有線路重複4十億次),你可以這樣做:

 
$ awk '!v[$0]++' input-file 

根據AWK的實現,你可能不需要擔心文件小於2^32線長。值得關注的是,如果您看到相同的行2^32次,則可能會溢出數組值中的整數,並且重複行的第2^32個實例(或2^31st)將被第二次輸出。實際上,這不太可能是一個問題!