アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前文字列抽出で質問させていただいた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本
     :
     :
--------------------------
と一つのファイルにしたいのです。
どうやったらこの結果を出せるのか、ご教授よろしくお願いします。

A 回答 (4件)

他の方が指摘されているように詳しいフォーマットがわからないですが


----------------------------------------------------------------
while(<>){
if(/To (.*?)さん/){
$user = $1;
}
if(/^\d\d/){
print "$user,$_";
}
}
----------------------------------------------------------------
とかして
>perl sample.pl aaa.txt bbb.txt … >all.txt
ぐらいでいいのかなぁと思います。
    • good
    • 0

1つのテキストファイルに、「”To”から始まる行」は


必ず、1行しかない。
という前提でしょうか?
    • good
    • 0

がると申します。

初心者さん相手に少々手厳しい内容で大変に恐縮ではあるのですが。
出されている例題ですと
・なぜその入力からその出力になるのか
という部分(ロジックとか仕様とか呼称します)がまったく見えないので、このままでは誰も返答が出せないかと思います。

例えば、
> 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行目"という行があるとして、これは鈴木さんのか? それとも山田さんのか? をどうやって判断するのだろう」など、不明点が多々出てきます。

基本的には、こういったロジック部分を作るのが腕になってくるのですが。もしそのロジック自体が作れないのであれば、せめてできるだけのデータを出してもらえると多少なりと有効な回答が返せるのではないかと思われます。
    • good
    • 0

実際、どのようなコーディングをしているのでしょうか。


できれば、ソースを公開された方がアドバイスしやすいかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!