linux排列去重复的命令,Linux Shell - 如何使用sort与uniq命令删除重复的文本行

需要对日志文件中的数据进行排序,但是有太多重复的行。 如何从GNU/Linux下的文本文件中删除所有重复的行?

您需要使用shell管道以及以下两个Linux命令行实用程序来排序和删除重复的文本行:

1、sort命令 - 在Linux和类Unix系统中对文本文件行进行排序。

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

bebc8af941c2df84e7f8a86d84dc9c08.png

使用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资讯

5f9297b64de983d4685b267a0f790a28.png

从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

f6b271285a79dd32e841b76248cde12c.png

在这里,

-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

ac5cc9429514ff40e69a570413222463.png

您可以在排序文件时消除文件中的任何重复条目,运行:

sort +2 -u linuxidc.txt

sort -u linuxidc.txt

97695c0f1366c23baa7f35a498dcf8c4.png

没有任何选项,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

验证它:

cat -n linuxidc.com.txt

4c29ae062501397290d804b8e9961b88.png

如何使用uniq命令删除重复的行

如何删除.txt文件中的重复行并将结果保存到新文件

请尝试以下任一语法:

sort shuru_wenjian | uniq > shuchu_wenjian

sort shuru_wenjian | uniq -u | tee shuchu_wenjian

总结

sort命令用于对文本文件的行进行排序,uniq过滤从文本文件中复制相邻的行。 这些命令有许多有用的选项。 我建议您通过键入以下man命令来阅读手册页:

man sort

man uniq

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值