[轉載]Linux下大文件的排序和去重複

Linux下大文件的排序和去重複

去重複行

  簡單的用法如下,如一個文件名: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的組合是很強大的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章