プロが教えるわが家の防犯対策術!

あbcdeeg
あbcdeeg
いbcdeeg
いccdeeg

上記のようなCSVデータ(タブ区切り)が100行くらいあるのですが、1列目にある、あ、あ、い、いは無視して、2列目以降のデータのみで重複を比較して同じ行は削除したいのですがどのようにすればよいでしょうか?

下記コードを応用すれば分かりそうなのですが、自分で作ることができませんでした。
どなたか、教えていただけ無いでしょうか?
宜しくお願い致します。


open(OUT, "$file");
@array = <OUT>;
close(OUT);

my %count;
@array = grep(!$count{$_}++, @array);

print @array;

A 回答 (3件)

@array = grep(!$count{$_}++, @array);


          ↓
@array = grep(!$count{(split(/\t/, $_, 2))[1]}++, @array);

#ハッシュのキーに2列目以降をセット
    • good
    • 1
この回答へのお礼

更なる改良ありがとうございました!!

お礼日時:2006/09/05 11:57

t140さん wrote



> @array = grep(!$count{(split(/\t/, $_, 2))[1]}++, @array);

# おお! こちらの方が断然いいですね。
# 勉強させてもらいました!
    • good
    • 0

my %count;


@array = grep{
my $line = $_;
$line =~ s/^.*?\t//;
!$count{$line}++;
} @array;

# で、どうでしょう?
    • good
    • 0
この回答へのお礼

動作もばっちりで、とても助かりました。
回答いただきありがとうございました!!

お礼日時:2006/09/05 11:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!