副标题[/!--empirenews.page--]
需要对日志文件中的数据进行排序,但是有太多重复的行。 如何从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的示例测试文件:
- linuxidc@linuxidc:~/www.linuxidc.com$ cat linuxidc.com.txt
样本输出:
- Linux公社(www.linuxidc.com)于2006年9月25日注册并开通网站
- Linux现在已经成为一种广受关注和支持的一种操作系统
- IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。
- 实时发布最新Linux资讯
- Linux公社是专业的Linux系统门户网站
- 实时发布最新Linux资讯,包括Linux、Ubuntu、Fedora、RedHat
- Linux教程、Linux认证、SUSE Linux、Android、Oracle、Hadoop等技术。
- 实时发布最新Linux资讯
- 实时发布最新Linux资讯
从Linux上的文本文件中删除重复的行
键入以下命令以删除所有重复行:
- linuxidc@linuxidc:~/www.linuxidc.com$ sort linuxidc.com.txt | uniq -u
样本输出:
- IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。
- Linux公社(www.linuxidc.com)于2006年9月25日注册并开通网站
- Linux公社是专业的Linux系统门户网站
- Linux教程、Linux认证、SUSE Linux、Android、Oracle、Hadoop等技术。
- Linux现在已经成为一种广受关注和支持的一种操作系统
- 实时发布最新Linux资讯,包括Linux、Ubuntu、Fedora、RedHat

在这里,
-u:检查是否有严格的排序,删除所有重复的行。
在Linux上排序文件内容
我们假设您有一个名为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
让我们排序,运行:
- sort linuxidc.txt
接下来按姓氏排序,运行:
- sort -r linuxidc.txt
想以相反的顺序排序? 尝试:
- sort +2 linuxidc.txt

您可以在排序文件时消除文件中的任何重复条目,运行:
- sort +2 -u linuxidc.txt
- sort -u linuxidc.txt
没有任何选项,sort会比较文件中的整行,并以ASCII顺序输出。 您可以使用选项控制输出。
如何使用uniq命令删除Linux上的重复行
使用以下文件:
- 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行,并将结果放在名为linuxidc.com.txt的文件中:
- uniq linuxidc.txt linuxidc.com.txt
(编辑:海南站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|