• 締切済み

複数のファイルを読み込み、1つのファイルとして出力する方法。

Nakanoです。いつもお世話になっております。 例えばテキストファイルを2つ用意し、1つのテキストファイルとして 出力したいのですが、いまいちやり方が分かりません。出来るのかどうかも 分からないです。(汗) 下にサンプルデータがあります。取り合えず「in1.txt」「in2.txt」 を最終的に『out.txt』の様に仕上げたいのですが… # =in1.txt AAAAA BBBBB CCCCC DDDDD 1,000 2,000 3,000 4,000 1,001 2,002 3,003 4,004 1,010 2,020 3,030 4,040 1,100 2,200 3,300 4,400 =in2.txt EEEEE FFFFF GGGGG HHHHH 5,000 6,000 7,000 8,000 5,005 6,006 7,007 8,008 5,050 6,060 7,070 8,080 5,500 6,600 7,700 8,800 # =out.txt AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF GGGGG HHHHH 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 1,001 2,002 3,003 4,004 5,005 6,006 7,007 8,008 1,010 2,020 3,030 4,040 5,050 6,060 7,070 8,080 1,100 2,200 3,300 4,400 5,500 6,600 7,700 8,800 # ・このデータはタブで区切っています。カンマはない場合もあります。 ・ファイルの中のそれぞれの文字列の数は固定です。行数も固定です。  各文字列の中の文字数はランダムです。  COPYコマンドを利用しても考えてみたのですが、後ろに続いちゃって  上手くいかなかったです。(笑)  Perlだと1つ目のファイルの1行目を配列に入れて、次に2つ目の  ファイルの1行目を配列に入れて、これを一旦出力して、同じ手順の  様な事を行を2行目、3行目、4行目、、とずらして繰り返す。って  感じでイメージしているのですが、どの様にソースを組めばいいのか  分かりませんでした。  どなたかご教授いただけないでしょうか? 宜しくお願い致します。

  • Perl
  • 回答数1
  • ありがとう数0

みんなの回答

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

最初に配列に読み込んでも良いけど、やることは同じです。 次のような感じいい(エラー処理がないけど)と思います。 open(IN1, "<in1.txt"); open(IN2, "<in2.txt"); open(OUT, ">out.txt"); while(<IN1>){ chomp; $in2 = <IN2>; print OUT "$_\t$in2"; } close(OUT); close(IN2); close(IN1);

関連するQ&A

  • テーブルAにあって、テーブルBにないデータ抽出

    このようなデータのテーブルがあります。 テーブルA key ID ----------------- 1 AAAAA 2 BBBBB 3 CCCCC 4 DDDDD 5 EEEEE 6 FFFFF 7 GGGGG 8 HHHHH 9 IIIII テーブルB key ID ----------------- 1 AAAAA 2 CCCCC 3 EEEEE 4 FFFFF 5 HHHHH 6 IIIII 7 JJJJJ 8 KKKKK 9 LLLLL この場合テーブルAのIDの中で、テーブルBのIDには存在しない行を取り出すのに、プログラムを使わずに取得する方法はありますか? この例だと取得するはずの行は key ID ----------------- 2 BBBBB 4 DDDDD 7 GGGGG になります。 どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • 任意の複数文字列(複数パターン)を一括で削除できるフリーソフト

    任意の複数文字列(複数パターン)を一括で削除できるフリーソフトを探しています。 これだけではわかりにくいので、例に挙げてみます。 下記のステップ1からステップ3までの処理を簡単に実現したいのです。 ステップ1、 これら複数文字列(一例)から------------------------------------------ aaaaa.com bbbbb.com ccccc.com ddddd.net eeeee.com fffff.biz ggggg.com hhhhh.net iiiii.com jjjjj.com ---------------------------------------------------------------------- ステップ2、 これら複数文字列(一例)を削除---------------------------------------- ddddd.net ggggg.com iiiii.com ---------------------------------------------------------------------- ステップ3、 ステップ1からステップ2を削除、ステップ3(一例)が残りました-------- aaaaa.com bbbbb.com ccccc.com eeeee.com fffff.biz hhhhh.net jjjjj.com ---------------------------------------------------------------------- メモ帳の置換で「検索する文字列」をステップ2のもの、「置換後の文字列」 を空白にすれば1つ1つ削除が可能ですが、毎回多量に削除対象が出てくると 手作業ではとても大変です。 そこで、ステップ2の削除対象をコピペで手軽に登録できて、ボタン1つで一 括削除できる、というようなツールを探しています。 どなたかご存じであればお教え下さい。 よろしくお願いします。

  • ファイルを移動するためのバッチファイル

    テキストファイル(1行に1つのファイル名が書かれていて、ファイルの数だけの行があるテキスト)を読み込み それをもとに、パス指定した参照先ディレクトリより、1つずつファイルを取得し、 パス指定した保存先ディレクトリに保存していくという、ファイルを移動(コピー)するためのバッチファイルを作りたいのですが どのようなコマンドを記述すればよいでしょうか? (できれば、MS-DOSのバッチファイルだと助かります) 例 [list.txt] aaaaa bbbbb eeeee [参照先] aaaaa bbbbb ccccc ddddd eeeee ↓ [保存先] aaaaa bbbbb eeeee

  • 【Excel2007】A列の値がB列に存在しないことを確認したい

    いつもお世話になっております。 Excel2007を使用しております。 次のような一覧があります。 A列   B列 aaaaa aaaaa bbbbb bbbbb ccccc ddddd ddddd fffff eeeee A列にはあるが、B列にはない値を取得したいと 思っております。 この例であれば、「ccccc」と「eeeee」を抜き出したいのです。 何か関数などで抜き出す方法がございましたら、 教えて頂けませんか? A列、B列ともに2000行程度あるため、調査に苦労しています。 ぜひよろしくお願いいたします。

  • 特定文字列を除外する方法(grep -v xxx の代替案)

    ファイルhoge.txtに aaaaa bbbbb . . . xxxxx と書かれているとします ここから特定の文字列を除外するとき egrep -v "aaaaa|bbbbb" hoge.txt とすれば、aaaaaとbbbbbは除外され表示されますよね これは"aaaaa|bbbbb"の部分で除外する対象を 指定するわけですが、出来れば"|"のような セパレータではなく、単純に xgrep -v aaaaa bbbbbと書きたいのですが このような書き方ってありますか? 除外対象となる文字列が都度変わる(つまり あるときはaaaaaとbbbbbを除去したいし、別の 場面ではcccccとdddddとeeeeeを除去したいなど) ため、除去対象を配列として保持して xgrep -v $exclude のように書くことができれば 配列を変えるだけでロジックに変更が起きないと 思っているのですがうまいやり方が見つかりません

  • 秀丸のマクロでカラムごとの処理

    aaaaa,bbbbb,ccccc,ddddd,eeeee 上記のようなCSVファイルで、2カラム目のbbbbbと 4カラム目のdddddの文字を変換するという場合 どういったマクロになりますでしょうか? よろしくお願いします。

  • ExcelVBAでテキスト出力で最後の行に追記

    エクセルVBAで、すでに色々と書き込まれているテキストファイルがあり 一番最後の行に追記したいです。 具体的に下記のようなテキストにzzzzzzと追記して aaaaa bbbbb ccccc ddddd 下記のようにしたいです。 どのようにしたらよいのでしょうか? aaaaa bbbbb ccccc ddddd zzzzzz

  • グーグルドキュメント(文書)で2列にする方法

    グーグルドキュメント(文書)で2列にしたいです。 横書きの場合。 左半分で、左上から始まり下にまでいく。 右半分の上にから始まり下までいくと、次のページ・・・ イメージだとこんなかんじです。 1枚目 aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb 2枚目 ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd

  • ソースコードの差分がある行番号を出力するには?

    ソースコードを修正したときに、変更箇所のイメージではなく、 変更箇所について修正行番号を出力する方法はありませんでしょうか? 例えば以下のようなことです。   修正前ファイル(file_old.c)     1: aaaaa     2: bbbbb     3: ccccc     4: ddddd     5: eeeee   修正後ファイル(file_old.c)     1: aaaaa     2: bbbbb     3: CCCCC     4: ddddd     5: EEEEE  このときに、変更詳細では無く、「3行目と5行目が変更されている」という情報が欲しいのです。 現在は、DFとかRekisaを使用して、変更箇所をハイライト表示して、 手作業で、「20行目と28行目、50行目が修正されているな」と確認しています。 修正箇所が少ないうちは、そんなに手間じゃないのですが、 100ステップ単位で修正したときなどは、修正箇所のピックアップが面倒だなぁと。 何か良い方法やツールありませんでしょうか?

  • 配列のインデックスを連番にしたい

    array 0 => 'aaaaa' (length=5) 2 => 'bbbbb' (length=5) 4 => 'ccccc' (length=5) 7 => 'ddddd' (length=5) 9 => 'eeeee' (length=5) 上記のような配列があった場合に、 インデックスを0からの連番にしたいのですが 何かいい方法はありますか? 以下のようにarray_reverseを二度使うという方法を 思いついたんですが、こういう使い方は何か変ですよね。。。 $field = array_reverse($field); $field = array_reverse($field); var_dump($field); array 0 => 'aaaaa' (length=5) 1 => 'bbbbb' (length=5) 2 => 'ccccc' (length=5) 3 => 'ddddd' (length=5) 4 => 'eeeee' (length=5)

    • ベストアンサー
    • PHP

専門家に質問してみよう