[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:357) 重複行の削除



空行の連続を1つにまとめたいと
お友達から相談された。

ラクダ(赤)本には
perl -ne 'print unless $seen{$_}++' 「ファイル名」
と美しくもメモリ大名なワンライナーがのってましたが、もうちょっと省エネな例;

#!/usr/local/bin/perl -w
foreach $i (@ARGV){
open(IN, "$i") || die "can't open $1 \n";
open(OUT, ">$i.new")|| die "can't open $1.new \n";
while(<IN>){ 
	if ($m ne $_) {
		print OUT $m;
		$m = $_;
	}
print OUT $m if(eof);

 }
close(IN);
close(OUT);
}