• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:grep関数を用いた複数行からの抽出)

重複した単語を削除する方法

このQ&Aのポイント
  • grep関数を使用して、複数行からの抽出を行います。
  • 同じ行で重複した単語を削除するために、ハッシュを使用します。
  • ファイルの各行に対して、重複した単語を削除して出力することで、目的の結果を得ることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • taco0603
  • ベストアンサー率63% (21/33)
回答No.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して、レコードの最後に改行付けてます。

nanashim
質問者

お礼

splitで文字列を分割してリストにした後、どのようにループさせれば 良いかを考えてしまい、悪戦苦闘していました(> <) chompの使い方含め、大変勉強になりました。有難うございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ループする

関連するQ&A