Perl:如何提取文本文件的唯一条目
我完全是Perl的初学者。我有一个大文件(大约100克),看起来像这样: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
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的映射器也是如此