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)