去重複行
簡單的用法如下,如一個文件名:happybirthday.txt
cat happybirthday.txt (顯示文件內容)
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
cat happybirthday.txt|sort (排序)
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
cat happybirthday.txt|sort|uniq (去重複行)
Happy Birthday Dear Tux!
Happy Birthday to You!
去大文件重複行
但有時碰到一個大文件時(例如G級的文件),用上面的命令時報錯,提示空間不足。我嘗試了一下,最後是用 split 命令把大文件分割爲幾個小文件,單獨排完序後再合併 uniq 。
split -b 200m happybirthday.big Prefix_
用-b參數切割happybirthday.big,小文件爲200M。切割後的文件名前綴是Prefix_切割後的文件名如
Prefix_aa
Prefix_ab再分別sort
sort Prefix_aa >Prefix_aa.sort
sort Prefix_ab >Prefix_ab.sort再用 sort -m合併,再 uniq
cat Prefix_aa.sort Prefix_ab.sort |sort -m |uniq這是好早前碰到的一個問題了。沒記錯的話應該是這麼回事。~
sort 與 uniq 命令還有許多有用的參數,如sort -m、uniq -u、uniq -d等。sort 與 uniq的組合是很強大的。