2014-12-05 45 views
0

我完全是Perl的初學者。我有一個大文件(約100克),它看起來像這樣:Perl:如何提取文本文件的唯一條目

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中做到這一點?或任何更優化的語言建議?

+1

重複數據刪除通常用哈希做,因爲哈希鍵是唯一的。 – TLP 2014-12-05 12:06:09

+0

您是否嘗試過使用'uniq'? – TLP 2014-12-05 12:08:34

+0

@TLP你是指bash uniq?我的文件沒有排序,這使得這個過程持續很長時間我猜 – UserYmY 2014-12-05 12:10:25

回答

0

要做的最簡單的事情是一次讀取文件一行,並將每行作爲散列的關鍵字。儘管如此,你必須有內存來存儲每條唯一的行。沒有得到解決。

這裏是一個一行從shell中運行:

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