2014-01-14 161 views
0

我正在處理文本文件。它有多個條目,我正在嘗試對文件進行排序和取消。我試圖將輸出寫入相同的文件,但似乎很難。所以我正在寫一個不同的文件。我已經能夠排序,但沒有得到獨特的。 在我的文本文件中的一些行perl中排序和uniq文本文件

AB.CD.EF 
BA.CD.EF 
DC.AB.EF 
CD.AB.EF 
AB.CD.EF 
DC.AB.EF 
EF.CD.AB 
BA.CD.EF 
EF.DC.AB etc.... 

我使用排序的代碼是

open(FH,'<mytext.txt'); 
open(OFH,'>myouttext.txt'); 
print OFH sort <FH>; 
close(OFH); 
close(FH); 

我需要這個代碼或一些其它的方式中納入獨特之處,但仍然排序和獨特的兩應該在相同的代碼塊內完成。如果可以完成並寫入相同的文件,那將會很棒。提前致謝。

+0

使用文件句柄作爲open'的'第一個參數是某種老式的,更好的做法是使用「間接文件句柄」請參閱[間接文件句柄](http://perldoc.perl.org/perlopentut.html#Indirect-Filehandles)以獲取更多詳細信息。 –

回答

2
open(FH, '<', 'mytext.txt') or die $!; 
open(OFH,'>', 'myouttext.txt') or die $!; 

my %seen; 
print OFH sort grep !$seen{$_}++, <FH>; 

close(OFH); 
close(FH); 

使用CMD線將更改保存到同一個文件,

sort -u -o mytext.txt mytext.txt 
+0

感謝您的快速回復。我曾經使用過上面的代碼,但有一些錯誤。我沒有使用,在之前,我使用了我之前在腳本中使用的變量。所以,它不適合我。這工作得很好。 – user3164754

+0

我沒有收到錯誤信息,但它正在將一些其他垃圾值打印到文本文件中。我按照你的建議改變了它,它工作正常。 – user3164754

+0

謝謝mpapec。但我想要一個腳本。你的代碼工作正常。謝謝。 – user3164754