質問: awk or perlが詳しい方ご教授下さい。 お世話になります。 下記のようなファイル内容があるとします。 (あくまでも例です。実際はもっと複雑です。) この内容の大阪府に関する部分だけを抽出したいと思います。 抽出方法はawkで抽出行数を指定する方法を考えていますが、 得られている情報は「大阪府 end」の行数だけです。 「大阪府 start」の行数を取得出来れば目的は達成出来るのですが、 その方法が分かりません。 awkで指定行数から上方向に検索をかけるということは可能でしょうか? (下記例でいくと「大阪府 end」の行数から「大阪府 start」を検索し、 その行数を取得するということをやりたいです。) 可能であればその方法をご教授下さい。 awkで無理ならperlでの方法でも構いません。 <例> ●ファイルの中身 東京都 start aaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbb ccccccccccccccccccc ddddddddddddddddddd 1000円 東京都 end 大阪府 start aaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbb ccccccccccccccccccc ddddddddddddddddddd 10000円 大阪府 end 神奈川県 start aaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbb ccccccccccccccccccc ddddddddddddddddddd 20000円 神奈川県 end 北海道 start aaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbb ccccccccccccccccccc ddddddddddddddddddd 3000円 北海道 end ・ ・ ・ 以上、宜しくお願いします。
回答: 天王寺支店の上下に大阪府startと大阪府endが必ずあるということでしたら、 先頭から順に読んでいき 1.大阪府startの行を記憶する。 新しい大阪府startがでたら、次々と置き換える。 2.天王寺支店が、出現したら、 最後の大阪府startの行を採用する。 3.以降は、大阪府endを探して終わり。 でどうでしょうか。