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

发表于:2018-12-29 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:聆听世界的鱼    来源: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、AndroidOracle、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

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号