• 締切済み

テキストファイルの中身を条件で分けて2ファイルに振り分けるには?

以下のようなテキストファイルがあります。 赤 青 黄 緑 赤 1行に1語あるとします これを重複があるものと 重複が1度も無いものに分けて それぞれをファイルに出力したいんですが ファイルA 赤 ファイルB 青 黄 緑 というようにしたいです。 PerlかPHPでと考えていたんですが どなたか良い方法を教えていただけませんでしょうか。 よろしくおねがいします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

PerlでもPHPでもできますが、連想配列を使うのが簡単です。 例えばPerlで while(<IN>){ chomp; $data{$_}++; } の様にすれば、 %dataにそれぞれの語での出現回数を数えることができます。 それが、1なら、重複していないデータで2以上なら重複しているので、それで書き出せばよいです。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 そうねぇ・・・・これは先に一旦全部元ファイルを舐める必要があるやね。単純にこれはアルゴリズムのお話だな。 データ構造 ・一つだけ存在するものリスト ・複数存在するものリスト $一つ->clear() $複数->clear() while(まだデータがある) {  $work = 1行読む  if($workが$複数の中に存在する) {   // そのデータをシカト  }elseif($workが$一つの中に存在する) {   $一つからそれを削除   $複数にそれを追加  } else {   $一つにそれを追加  } } $一つを「一つのものファイル」に書き出し $複数を「複数のものファイル」に書き出し こんな感じかなぁ。

関連するQ&A