Linux Shell教程 - 如何刪除重復(fù)的文本行
需要對日志文件中的數(shù)據(jù)進(jìn)行排序,但是有太多重復(fù)的行。 如何從GNU/Linux下的文本文件中刪除所有重復(fù)的行?
您需要使用shell管道以及以下兩個Linux命令行實用程序來排序和刪除重復(fù)的文本行:
1、sort命令 - 在Linux和類Unix系統(tǒng)中對文本文件行進(jìn)行排序。
2、uniq命令 - 在Linux或Unix上運(yùn)行或省略重復(fù)的行
使用Sort,Uniq和Shell管道刪除重復(fù)行
使用以下語法:
- sort {file-name} | uniq -u
- sort file.log | uniq -u
使用uniq刪除重復(fù)的行
以下是使用cat命令顯示的名為garbage.txt的示例測試文件:
- linuxidc@linuxidc:~/www.linuxidc.com$ cat linuxidc.com.txt
樣本輸出:
- Linux公社(www.linuxidc.com)于2006年9月25日注冊并開通網(wǎng)站
- Linux現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng)
- IDC是互聯(lián)網(wǎng)數(shù)據(jù)中心,LinuxIDC就是關(guān)于Linux的數(shù)據(jù)中心。
- 實時發(fā)布***Linux資訊
- Linux公社是專業(yè)的Linux系統(tǒng)門戶網(wǎng)站
- 實時發(fā)布***Linux資訊,包括Linux、Ubuntu、Fedora、RedHat
- Linux教程、Linux認(rèn)證、SUSE Linux、Android、Oracle、Hadoop等技術(shù)。
- 實時發(fā)布***Linux資訊
- 實時發(fā)布***Linux資訊
從Linux上的文本文件中刪除重復(fù)的行
鍵入以下命令以刪除所有重復(fù)行:
- linuxidc@linuxidc:~/www.linuxidc.com$ sort linuxidc.com.txt | uniq -u
樣本輸出:
- IDC是互聯(lián)網(wǎng)數(shù)據(jù)中心,LinuxIDC就是關(guān)于Linux的數(shù)據(jù)中心。
- Linux公社(www.linuxidc.com)于2006年9月25日注冊并開通網(wǎng)站
- Linux公社是專業(yè)的Linux系統(tǒng)門戶網(wǎng)站
- Linux教程、Linux認(rèn)證、SUSE Linux、Android、Oracle、Hadoop等技術(shù)。
- Linux現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng)
- 實時發(fā)布***Linux資訊,包括Linux、Ubuntu、Fedora、RedHat
在這里,
-u:檢查是否有嚴(yán)格的排序,刪除所有重復(fù)的行。
在Linux上排序文件內(nèi)容
我們假設(shè)您有一個名為users.txt的文件:
- cat linuxidc.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
讓我們排序,運(yùn)行:
- sort linuxidc.txt
接下來按姓氏排序,運(yùn)行:
- sort -r linuxidc.txt
想以相反的順序排序? 嘗試:
- sort +2 linuxidc.txt
您可以在排序文件時消除文件中的任何重復(fù)條目,運(yùn)行:
- sort +2 -u linuxidc.txt
- sort -u linuxidc.txt
沒有任何選項,sort會比較文件中的整行,并以ASCII順序輸出。 您可以使用選項控制輸出。
如何使用uniq命令刪除Linux上的重復(fù)行
使用以下文件:
- linuxidc@linuxidc:~/www.linuxidc.com$ cat -n linuxidc.txt
樣本輸出:
- 1 www.linuxidc.com
- 2 Linux公社
- 3 linuxidc
- 4 linuxidc.com
- 5 ------------
- 6 5566778899
- 7 5566778899
- 8 5566778899
uniq命令從文件中刪除第8行,并將結(jié)果放在名為linuxidc.com.txt的文件中:
- uniq linuxidc.txt linuxidc.com.txt
驗證它:
- cat -n linuxidc.com.txt
如何使用uniq命令刪除重復(fù)的行
如何刪除.txt文件中的重復(fù)行并將結(jié)果保存到新文件
請嘗試以下任一語法:
- sort shuru_wenjian | uniq > shuchu_wenjian
- sort shuru_wenjian | uniq -u | tee shuchu_wenjian
總結(jié)
sort命令用于對文本文件的行進(jìn)行排序,uniq過濾從文本文件中復(fù)制相鄰的行。 這些命令有許多有用的選項。 我建議您通過鍵入以下man命令來閱讀手冊頁:
- man sort
- man uniq