- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:grep関数を用いた複数行からの抽出)
重複した単語を削除する方法
このQ&Aのポイント
- grep関数を使用して、複数行からの抽出を行います。
- 同じ行で重複した単語を削除するために、ハッシュを使用します。
- ファイルの各行に対して、重複した単語を削除して出力することで、目的の結果を得ることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>$string1 = <FILE1>; これは配列で受け取ってないので、入力ファイルから1行だけ取得する処理です。 なので全行を読み込むのであれば、No.1さんの言うとおり、ループさせる必要があります。 ループの書き方ですがファイルハンドルをwhileでループさせるか、一度配列に落としてforeachでループさせるかがベタではないかと。配列に落とすんならこんな感じですかね…。 --- my @data = <FILE1>; chomp @data; foreach my $line (@data) { my @array = split(/\t/, $line); my %count; @array = grep {!$count{$_}++}@array; foreach my $element (@array) { print OUT "$element\t"; } print OUT "\n"; } --- 改行を削除しないと整形したファイルの先頭に\tがつくんで、とりあえずchompして、レコードの最後に改行付けてます。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
ループする
お礼
splitで文字列を分割してリストにした後、どのようにループさせれば 良いかを考えてしまい、悪戦苦闘していました(> <) chompの使い方含め、大変勉強になりました。有難うございました。