删除文本文档中的重复行并保留一行?

时间:2014-04-13 17:59:57

标签: perl duplicate-removal

我不是程序员,但我想帮助删除文档中的重复行并仅保留原始行。 我试图用一些文本处理器,editpadpro,但由于我的文件超过1千兆字节,总是被冻结,无法完成操作。

我知道perl非常擅长这个,但我不知道如何使用它,请记住文件可能超过1或2 gB。

输入行示例:

line 1 
line 2
line 3
line 1
line 2
line 4
line 1

输出行示例:

line 1 
line 2
line 3
line 4

我很抱歉,如果这是非常基本的,但我真的不知道如何继续,大部分时间我使用内置函数,我希望不要惹恼任何人这个问题。

3 个答案:

答案 0 :(得分:2)

如果您不介意行不符合原始顺序,可以使用此命令:

$ sort -u old_file.txt > new_file.txt

sort将对您的文件进行排序,-u选项代表唯一,这意味着它只会输出第一个匹配的行。

即使文件非常大,sort也许是您最大的希望。

答案 1 :(得分:1)

保留现有订单(第一次找到每一行):

perl -i -wlne'our %uniq; $uniq{$_}++ or print' file.txt

答案 2 :(得分:0)

使用awkhttp://awk.freeshell.org/AwkTips

也可以有效地完成此操作
awk '!a[$0]++'