- ベストアンサー
Perlで重複行を削除したい
あ b c d e e g あ b c d e e g い b c d e e g い c c d e e g 上記のようなCSVデータ(タブ区切り)が100行くらいあるのですが、1列目にある、あ、あ、い、いは無視して、2列目以降のデータのみで重複を比較して同じ行は削除したいのですがどのようにすればよいでしょうか? 下記コードを応用すれば分かりそうなのですが、自分で作ることができませんでした。 どなたか、教えていただけ無いでしょうか? 宜しくお願い致します。 open(OUT, "$file"); @array = <OUT>; close(OUT); my %count; @array = grep(!$count{$_}++, @array); print @array;
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
@array = grep(!$count{$_}++, @array); ↓ @array = grep(!$count{(split(/\t/, $_, 2))[1]}++, @array); #ハッシュのキーに2列目以降をセット
その他の回答 (2)
- okiyoshi
- ベストアンサー率34% (11/32)
t140さん wrote > @array = grep(!$count{(split(/\t/, $_, 2))[1]}++, @array); # おお! こちらの方が断然いいですね。 # 勉強させてもらいました!
- okiyoshi
- ベストアンサー率34% (11/32)
my %count; @array = grep{ my $line = $_; $line =~ s/^.*?\t//; !$count{$line}++; } @array; # で、どうでしょう?
お礼
動作もばっちりで、とても助かりました。 回答いただきありがとうございました!!
お礼
更なる改良ありがとうございました!!