Perl:如何提取文本文件的唯一条目

Perl:如何提取文本文件的唯一条目,perl,bigdata,duplicate-removal,Perl,Bigdata,Duplicate Removal,我完全是Perl的初学者。我有一个大文件(大约100克),看起来像这样: domain, ip "www.google.ac.",173.194.33.111 "www.google.ac.",173.194.33.119 "www.google.ac.",173.194.33.120 "www.google.ac.",173.194.33.127 "www.google.ac.",173.194.33.143 "apple.com., 173.194.33.143 "studi

我完全是Perl的初学者。我有一个大文件(大约100克),看起来像这样:

 domain, ip
 "www.google.ac.",173.194.33.111
 "www.google.ac.",173.194.33.119
 "www.google.ac.",173.194.33.120
 "www.google.ac.",173.194.33.127
 "www.google.ac.",173.194.33.143
 "apple.com., 173.194.33.143
 "studio.com.", 173.194.33.143
 "www.google.ac.",101.78.156.201
 "www.google.ac.",101.78.156.201
所以基本上我有1个重复的线路,2个不同域的ip,3个不同ip的域。我想从文件中删除重复的行(具有相同域、ip对的行)

**我已经复习了关于同一个问题的其他答案,没有一个能解决我的大文件问题


有人知道我如何用PERL实现它吗?或者对更优化的语言有什么建议?

最简单的方法是一次读取一行文件,并使用每一行作为散列的键。不过,您必须有内存来存储每个唯一的行一次。这是绕不开的

这是一个从外壳上运行的单衬里:

perl -ne '$lines{$_}++; END { print keys %lines }' filename

由于散列键是唯一的,所以重复数据消除通常使用散列来完成。您是否尝试过使用
uniq
?@TLP您是指bash uniq?我的文件没有被排序,这使得这个过程持续了很长时间。我想你在Perl中也会遇到同样的问题。你已经用
bigdata
标记了你的问题,所以你可能知道Hadoop,对吧?这在Hadoop中是可行的,即使使用基于Perl的映射器也是如此