Linux Shell - 如何使用sort與uniq命令刪除重複的文字行
需要對日誌檔案中的資料進行排序,但是有太多重複的行。 如何從GNU/Linux下的文字檔案中刪除所有重複的行?
您需要使用shell管道以及以下兩個Linux命令列實用程式來排序和刪除重複的文字行:
1、sort命令 - 在Linux和類Unix系統中對文字檔案行進行排序。
2、uniq命令 - 在Linux或Unix上執行或省略重複的行
使用Sort,Uniq和Shell管道刪除重複行
使用以下語法:
sort {file-name} | uniq -u
sort file.log | uniq -u
使用uniq刪除重複的行
以下是使用cat命令顯示的名為garbage.txt的示例測試檔案:
樣本輸出:
實時釋出最新Linux資訊
實時釋出最新Linux資訊
實時釋出最新Linux資訊
從Linux上的文字檔案中刪除重複的行
鍵入以下命令以刪除所有重複行:
在這裡,
-u:檢查是否有嚴格的排序,刪除所有重複的行。
在Linux上排序檔案內容
我們假設您有一個名為users.txt的檔案:
Linux Idc 22/11/72
Zhang San 12/01/69
Li Ai 30/12/88
A Bao 15/08/76
Chen Xiao 05/06/77
Shen Lin 13/02/75
Da Cen 21/10/73
Zhang San 12/01/69
讓我們排序,執行:
接下來按姓氏排序,執行:
想以相反的順序排序? 嘗試:
您可以在排序檔案時消除檔案中的任何重複條目,執行:
沒有任何選項,sort會比較檔案中的整行,並以ASCII順序輸出。 您可以使用選項控制輸出。
如何使用uniq命令刪除Linux上的重複行
使用以下檔案:
樣本輸出:
驗證它:
如何使用uniq命令刪除重複的行
如何刪除.txt檔案中的重複行並將結果儲存到新檔案
請嘗試以下任一語法:
sort shuru_wenjian | uniq > shuchu_wenjian
sort shuru_wenjian | uniq -u | tee shuchu_wenjian
總結
sort命令用於對文字檔案的行進行排序,uniq過濾從文字檔案中複製相鄰的行。 這些命令有許多有用的選項。 我建議您通過鍵入以下man命令來閱讀手冊頁:
man sort
man uniq