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

系统 Linux
需要对日志文件中的数据进行排序,但是有太多重复的行。 如何从GNU/Linux下的文本文件中删除所有重复的行?您需要使用shell管道以及以下两个Linux命令行实用程序来排序和删除重复的文本行。

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

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

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

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

使用Sort,Uniq和Shell管道删除重复行

使用以下语法: 

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

使用uniq删除重复的行

以下是使用cat命令显示的名为garbage.txt的示例测试文件:

  1. linuxidc@linuxidc:~/www.linuxidc.com$ cat linuxidc.com.txt 

样本输出: 

  1. Linux公社(www.linuxidc.com)于2006年9月25日注册并开通网站  
  2. Linux现在已经成为一种广受关注和支持的一种操作系统  
  3. IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。  
  4. 实时发布***Linux资讯  
  5. Linux公社是专业的Linux系统门户网站  
  6. 实时发布***Linux资讯,包括Linux、Ubuntu、Fedora、RedHat  
  7. Linux教程、Linux认证、SUSE Linux、Android、Oracle、Hadoop等技术。  
  8. 实时发布***Linux资讯  
  9. 实时发布***Linux资讯 

从Linux上的文本文件中删除重复的行

键入以下命令以删除所有重复行:

  1. linuxidc@linuxidc:~/www.linuxidc.com$ sort linuxidc.com.txt | uniq -u 

样本输出:  

  1. IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 
  2. Linux公社(www.linuxidc.com)于2006年9月25日注册并开通网站  
  3. Linux公社是专业的Linux系统门户网站  
  4. Linux教程、Linux认证、SUSE Linux、Android、Oracle、Hadoop等技术。  
  5. Linux现在已经成为一种广受关注和支持的一种操作系统  
  6. 实时发布***Linux资讯,包括Linux、Ubuntu、Fedora、RedHat 

在这里,

-u:检查是否有严格的排序,删除所有重复的行。

在Linux上排序文件内容

我们假设您有一个名为users.txt的文件: 

  1. cat linuxidc.txt  
  2. Linux Idc 22/11/72  
  3. Zhang San 12/01/69  
  4. Li Ai  30/12/88  
  5. A Bao 15/08/76  
  6. Chen Xiao  05/06/77  
  7. Shen Lin 13/02/75  
  8. Da Cen 21/10/73  
  9. Zhang San 12/01/69 

让我们排序,运行:

  1. sort linuxidc.txt 

接下来按姓氏排序,运行:

  1. sort -r linuxidc.txt 

想以相反的顺序排序? 尝试:

  1. sort +2 linuxidc.txt 

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

  1. sort +2 -u linuxidc.txt  
  2. sort -u linuxidc.txt 

没有任何选项,sort会比较文件中的整行,并以ASCII顺序输出。 您可以使用选项控制输出。

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

使用以下文件:

  1. linuxidc@linuxidc:~/www.linuxidc.com$ cat -n linuxidc.txt 

样本输出:   

  1. 1 www.linuxidc.com  
  2.    2 Linux公社  
  3.    3 linuxidc  
  4.    4 linuxidc.com  
  5.    5 ------------  
  6.    6 5566778899  
  7.    7 5566778899  
  8.    8 5566778899 

uniq命令从文件中删除第8行,并将结果放在名为linuxidc.com.txt的文件中:

  1. uniq linuxidc.txt linuxidc.com.txt 

验证它:

  1. cat -n linuxidc.com.txt 

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

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

请尝试以下任一语法: 

  1. sort shuru_wenjian | uniq > shuchu_wenjian  
  2. sort shuru_wenjian | uniq -u | tee shuchu_wenjian 

总结

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

  1. man sort  
  2. man uniq  
责任编辑:庞桂玉 来源: Linux公社
相关推荐

2019-09-26 06:50:16

Linux命令回车字符

2018-10-17 09:20:31

Linux命令重复文件

2015-03-30 11:34:19

LinuxFSlint

2017-12-18 10:12:48

LinuxShell命令

2021-08-09 11:31:54

Linux重复相片删除

2011-04-13 13:13:09

重复数据删除

2020-12-14 06:57:37

shell

2010-07-07 16:53:54

SQL Server重

2016-03-30 11:16:33

2015-08-13 09:09:10

LinuxdupeGuru

2009-04-20 15:54:04

SQL Server重复行

2010-10-27 16:56:05

Oracle重复记录

2021-06-22 09:32:40

Linuxshell命令

2017-03-02 18:10:20

LinuxShell命令

2018-04-27 13:00:00

数据库MySQL删除重复行

2021-11-17 11:20:57

LinuxGNOME Shell桌面

2010-10-13 17:07:46

MySQL删除重复记录

2023-05-20 17:45:25

LinuxShell

2022-11-01 15:38:22

LinuxShell

2009-01-11 17:32:03

Oracle数据库重复数据
点赞
收藏

51CTO技术栈公众号