- 締切済み
複数ファイルから特定の行だけ取り出し、1つのファイルにまとめるには
以前文字列抽出で質問させていただいたPerl初心者のものです。よろしくお願いします。 あるディレクトリ内にある全てのファイル(.txt)から 「”To”から始まる行」と「”01”といった2桁の数字から始まる行」のみ取り出し、1つのファイルにまとめたいと思ってるのですが、うまくできません。 <文字列を含むファイル:aaa.txt> -------------------------- To 鈴木 太郎さん 1行目 : 01,りんご, 3 個, ナシ, 1個 14行目 02,キャベツ, 3 個, なす, 10本 15行目 : -------------------------- このような内容のファイルが複数あり 結果として -------------------------- 鈴木 太郎,01,りんご, 3 個, ナシ, 1個 鈴木 太郎,02,キャベツ, 3 個, なす, 10本 山田 洋子,01,ぶどう, 3 個, もも, 1個 山田 洋子,02,たまねぎ, 5 個, なす, 10本 山田 洋子,03,牛肉, 1kg 山本 次郎,01,リンゴ, 5 個, バナナ, 5本 : : -------------------------- と一つのファイルにしたいのです。 どうやったらこの結果を出せるのか、ご教授よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
他の方が指摘されているように詳しいフォーマットがわからないですが ---------------------------------------------------------------- while(<>){ if(/To (.*?)さん/){ $user = $1; } if(/^\d\d/){ print "$user,$_"; } } ---------------------------------------------------------------- とかして >perl sample.pl aaa.txt bbb.txt … >all.txt ぐらいでいいのかなぁと思います。
- to_kyo
- ベストアンサー率41% (7/17)
1つのテキストファイルに、「”To”から始まる行」は 必ず、1行しかない。 という前提でしょうか?
- galluda
- ベストアンサー率35% (440/1242)
がると申します。初心者さん相手に少々手厳しい内容で大変に恐縮ではあるのですが。 出されている例題ですと ・なぜその入力からその出力になるのか という部分(ロジックとか仕様とか呼称します)がまったく見えないので、このままでは誰も返答が出せないかと思います。 例えば、 > To 鈴木 太郎さん 1行目 > 01,りんご, 3 個, ナシ, 1個 14行目 > 02,キャベツ, 3 個, なす, 10本 15行目 の3行から > 鈴木 太郎,01,りんご, 3 個, ナシ, 1個 > 鈴木 太郎,02,キャベツ, 3 個, なす, 10本 はまだ理解が出来るのですが、これに > 山田 洋子,01,ぶどう, 3 個, もも, 1個 > 山田 洋子,02,たまねぎ, 5 個, なす, 10本 > 山田 洋子,03,牛肉, 1kg がつくと、例えば「"01,りんご, 3 個, ナシ, 1個 14行目"という行があるとして、これは鈴木さんのか? それとも山田さんのか? をどうやって判断するのだろう」など、不明点が多々出てきます。 基本的には、こういったロジック部分を作るのが腕になってくるのですが。もしそのロジック自体が作れないのであれば、せめてできるだけのデータを出してもらえると多少なりと有効な回答が返せるのではないかと思われます。
- agharta
- ベストアンサー率52% (54/103)
実際、どのようなコーディングをしているのでしょうか。 できれば、ソースを公開された方がアドバイスしやすいかと思います。