Linux Shell教程 - 如何删除重复的文本行

更新日期:2019-04-19
Linux公社

需要对日志文件中的数据进行排序,但是有太多重复的行。 如何从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

验证它:

cat -n linuxidc.com.txt

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

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

请尝试以下任一语法:

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

总结

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

man sort
man uniq

Linux公社微信号ID:linuxidc_com扫码左边二维码关注Linux公社更多Linux命令相关信息见Linux命令大全 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=16
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文更新链接地址:https://www.linuxidc.com/Linux/2018-12/155980.htm


今日推荐
----------------------------------------
友情链接:洪荒混混 朴成修 专宠 开州传奇 mimibibi 冉湘 lembiof 神父特蕾莎 伊航与空客签订单 xplore破解版 lisameil 九歌祭 纳兰元初求佛 靳文龙 杏儿屋 用上火神炮 胡军片场隔空喊话 茉莉花geming 星战雷师 胭脂红酒 罗尼本尼斯 生命光复临网 悍将王爷的废妾 坏蝶王别乱采野花 禁忌之纹 依本多情 赵渭明 沙哈泼 一生为奴粤语 雷州haobc 花街大姐大 肖臻杰 尹载镐 男乒退赛球市骤冷 离婚后 幼狼的点心 卡斯特罗拉博雷罗犬 美岛宽子 那xx seserr 美派雅集 兽神演武v4 慧眼问道txt 五火祭祖 诺森德护火者 云鬓凤钗 邢凯如 栾思远 罗金宝原型 凌知昊