Linux Shell如何删除重复的文本行
时间:2020-01-09 10:46:11 来源:igfitidea点击:
如何对日志文件中的数据进行排序,但是有太多重复的行。
如何在GNU/Linux下从文本文件中删除所有重复的行?
您需要使用Shell管道以及以下两个Linux命令行实用工具来排序和删除重复的文本行:
sort命令
在Linux和类Unix系统中对文本文件行进行排序。uniq命令
在Linux或者Unix上导出或者省略重复的行
使用Sort,Uniq和Shell管道删除重复的行
使用以下语法:
sort {file-name} | uniq -u sort file.log | uniq -u
使用uniq删除重复的行
这是一个使用cat命令显示的示例测试文件,名为garbage.txt:
cat garbage.txt
输出示例:
this is a test food that are killing you wings of fire we hope that the labor spent in creating this software this is a test unix ips as well as enjoy our blog
在Linux上从文本文件中删除重复的行
执行以下命令以消除所有重复的行:
$ sort garbage.txt | uniq -u
输出示例:
food that are killing you unix ips as well as enjoy our blog we hope that the labor spent in creating this software wings of fire
其中:
-u
:检查是否有严格的顺序,删除所有重复的行。
在Linux上对文件内容进行排序
假设您有一个名为users.txt的文件:
cat users.txt
输出示例:
24/10/72 Martin Lee 12/11/68 Sai Kumar 31/12/84 Marlena Summer 13/05/76 Wendy Lee 04/05/77 Sayali Gite 13/02/76 24/10/72
让我们排序,运行:
sort users.txt
接下来按姓氏排序,运行:
sort +2 users.txt
是否要以相反的顺序排序?
尝试:
sort -r users.txt
您可以在订购文件时消除文件中的任何重复条目,运行:
sort +2 -u users.txt sort -u users.txt
没有任何选项,排序将比较文件中的整行并以ASCII顺序输出它们。
您可以使用选项控制输出。
如何使用uniq命令删除Linux上的重复行
考虑以下文件:
cat -n telphone.txt
输出示例:
1 99884123 2 97993431 3 81234000 4 02041467 5 77985508 6 97993431 7 77985509 8 77985509
uniq命令从文件中删除第8行,并将结果放置在名为output.txt的文件中:
uniq telphone.txt output.txt
验证一下:
cat -n output.txt
如何删除.txt文件中的重复行并将结果保存到新文件
尝试以下任何一种语法:
sort input_file | uniq > output_file sort input_file | uniq -u | tee output_file