删除文本文件中的重复行.....?

use*_*942 10 command-line text-processing

如何通过命令提示符删除文本文件中的重复行?

例如:我有一个 10MB 的文本文件,我只想保留一行My line,但文本文件中的某处有 2My line秒。

小智 18

使用 awk

awk '!x[$0]++' infile.txt > outfile.txt
Run Code Online (Sandbox Code Playgroud)

它的工作方式是保持数组中的行数,如果当前计数为零,即第一次出现,则打印该行,否则继续下一个。


小智 7

有多种方法可以做到这一点。如果排序不重要,那么 sort 和 uniq 最容易记住。但是,如果您想保持文本文件的顺序但删除重复项,那么 awk 可以解决问题。我相信你也可以使用 sed 。

这是一个例子

/tmp/debugSys>cat fileWithDupText.txt 
line2
line21
line2
line1
line2
/tmp/debugSys>

/tmp/debugSys>cat fileWithDupText.txt | awk '!a[$0]++' 
line2
line21
line1
/tmp/debugSys>sort fileWithDupText.txt | uniq
line1
line2
line21
/tmp/debugSys>sort -u fileWithDupText.txt 
line1
line2
line21
/tmp/debugSys>
Run Code Online (Sandbox Code Playgroud)