• 締切済み

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

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

  • nobr
  • お礼率0% (0/2)

みんなの回答

  • 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

  • 違うデータのみ表示

    違うデータのみ表示したいです。 A B 1  赤 2  青 3  青 4  黄 5  赤 6  緑 7  青 8  赤 のようなとき B列に重複するデータは表示しないように 赤 青 黄 緑 の4種類だけ表示したいです。 教えてください。

  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー

  • タブ区切りのテキストファイルの項目を並び変えたいのです。

    タブ区切りのテキストファイルの項目を並び変えたいのです。 例えば、 A りんご 犬 赤 B みかん ねこ 黄 C パイナップル ねずみ 緑 という風にタブ区切りで並んでいるテキストファイルを 赤 りんご 犬 A  黄 みかん ねこ B  緑 パイナップル ねずみ C  などという風に項目を並び変えたいのです。 EXCELに一度取り込んでVBAでコーディングすればよいのでしょうか? 具体的にどのように記述すればよいかお願いいたします。 また、インストールなどはせずに単体で動かしたいのですが、VBAではなく他の方法もあれば教えてください。

  • EXCEL:2項目で重複するデータを抽出したい

    EXCELで、A,B,C,D・・・とデータが続き、それぞれに重複する複数個のデータがあるときに、重複を省いて抽出することはできるのでしょうか?データ(行)が約5万件ほど合って、手作業では無理な状況です。どなたか、ぜひ教えて下さい! 例: A 青 A 青 A 白 B 赤 B 黄 B 黄 C 青 ↓ A 青 A 白 B 赤 B 黄 C 青

  • テキストを自動色替えしてくれるソフト

    テキストを読み込んで、自動的に色を付けてくれるソフトを探しています。 具体的には 【A】「○○○○○○○」 【B】「○○○○○○○」 【C】「○○○○○○○」 というようなテキストがあれば、 【A】のある一行は、赤 【B】のある一行は、黄 【C】のある一行は、青 というように、頭文字、或いは、行中の文字列を判別して、色分けしたいと考えています。 そのようなソフトがありましたら、教えていただけますでしょうか。 よろしくお願いします。

  • エクセルの条件付き書式について

    A1セルに「100」が入力された場合、B1セルの色を赤に、同様にして200:青、300:黄、400:緑、500:赤、600:青、700:黄、800:緑という風にB1セルの色を変えたいと思います。 条件付き書式は3つまでしかないのですが、色のパターンは4種類なので、元の書式と合わせると4パターンです。 条件付書式で、A1セルの値が200又は600ならB1セルの色を青にするにはどうすればよろしいでしょうか。 つたない文章でわかりにくいかと思いますが、よろしくご回答ください。

  • テキストファイルのデータの追加

    二つのテキストファイルを結合というより新規のデータだけを追加したいのですが、そのようなコマンドはあるのでしょうか? 今は copy a.txt+b.txt c.txt copy c.txt b.txt を動かした後、テキストbを開いてテキストaとテキストbの重複しているデータを手作業で消しています。 また、上の2行のコマンドを1行にすることは可能でしょうか?

  • excel vbaでテキスト出力

    A行=ファイル名 B~D行=テキスト内容 としてテキストファイルを出力したいのですが、やり方を教えていただけないでしょうか? A2から空白にあたるまでテキストを順々に出力したいのですが・・・ よろしくお願いします

  • 重複する行の削除の方法(VBA)

    エクセルのVBAで質問です。 以下のような表で、   A B C 1 赤 10 × 2 青 20 ○ 3 青 20 ○ 4 黄 30 × 5 緑 10 ○ 6 紫 15 △ 7 紫 15 △ 8 紫 15 △ Aのセルの要素が重複しているこのような場合に1つだけを残したい、 つまり3行目と7.8行目を削除したいのです。 (実際の列数は10、行数は1万程度あります) このような場合、どのようなマクロを組めばいいでしょうか? なお、最終行の場所は lngMaxRow = Cells.SpecialCells(xlLastCell).Rowによって取得しております。 出来れば後学のために処理の簡単な説明も付けていただけると助かります。 宜しくお願いします。

  • こんな時の関数

    列A 列B 列C 赤 229 12,330 青  21  967 黄  21  967 緑  6  389 緑 524 15,837 赤  48  3,087 緑  67  3,251 黄 257  9,771 青  9  860 青  24  1,324 青 935 34,519 赤計 ? ? 青計 ? ? 黄計 ? ? 緑計 ? ? 各色の計を出したいのですが、どうすると良いでしょうか?

専門家に質問してみよう