1. 程式人生 > >Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

需要對日誌檔案中的資料進行排序,但是有太多重複的行。 如何從GNU/Linux下的文字檔案中刪除所有重複的行?

您需要使用shell管道以及以下兩個Linux命令列實用程式來排序和刪除重複的文字行:

1、sort命令 - 在Linux和類Unix系統中對文字檔案行進行排序。

2、uniq命令 - 在Linux或Unix上執行或省略重複的行

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

使用Sort,Uniq和Shell管道刪除重複行

使用以下語法:

sort {file-name} | uniq -u
sort file.log | uniq -u

使用uniq刪除重複的行

以下是使用cat命令顯示的名為garbage.txt的示例測試檔案:

樣本輸出

實時釋出最新Linux資訊

實時釋出最新Linux資訊

實時釋出最新Linux資訊

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

從Linux上的文字檔案中刪除重複的行

鍵入以下命令以刪除所有重複行:

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

在這裡,

-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

讓我們排序,執行:

接下來按姓氏排序,執行:

想以相反的順序排序? 嘗試:

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

您可以在排序檔案時消除檔案中的任何重複條目,執行:

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

沒有任何選項,sort會比較檔案中的整行,並以ASCII順序輸出。 您可以使用選項控制輸出。

如何使用uniq命令刪除Linux上的重複行

使用以下檔案:

樣本輸出:

驗證它:

Linux Shell - 如何使用sort與uniq命令刪除重複的文字行

如何使用uniq命令刪除重複的行

如何刪除.txt檔案中的重複行並將結果儲存到新檔案

請嘗試以下任一語法:

sort shuru_wenjian | uniq > shuchu_wenjian
sort shuru_wenjian | uniq -u | tee shuchu_wenjian

總結

sort命令用於對文字檔案的行進行排序,uniq過濾從文字檔案中複製相鄰的行。 這些命令有許多有用的選項。 我建議您通過鍵入以下man命令來閱讀手冊頁:

man sort
man uniq