- 締切済み
Bシェルでファイルから特定の範囲を抽出するには?
お世話になります。 ディレクトリにファイル群があるとします。 そのファイル群の中の特定のファイルの特定の個所を抽出し、別ファイルに吐くというシェルを組みたいのですが、 どのようにしたら良いでしょうか? <例> ●ファイル群は作成された日付を持ちます。 売上_200601.txt、売上_200602.txt、売上_2006003.txt、売上_200604.txt・・・・・・ ●ファイルの中身はある法則が成立しています。 (売上_20060101.txtの中身) 東京都 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 ・ ・ ・ ※都道府県の重複はありません 月毎の売上が纏められているファイルの中から特定の年月の都道府県売上分を抽出したいです。 抽出条件としましては「年月」「都道府県」が与えられます。 上記の例でいくと、「売上_200601.txt」の「東京都 start~東京都 end」までを抽出したいのです。 ファイルの特定は抽出条件の「年月」を元にfindコマンドにて導き出すことは可能なのですが、 中身の「東京都 start~東京都 end」をどのように抽出するのかが分かりません。 分かり難い内容に恐縮ですが、ご教授の程よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>AWKを使う例 ---------------------------------------------------------------- /^東京都 start$/,/^東京都 end$/{ print } ---------------------------------------------------------------- でイイと思います。 例えば、日本語をちゃんと認識するようになっていれば 上記をselect.awk という名前で保存してあるとすると awk -f select.awk 売上_200601.txt でうまくいくと思います。(gawk ではテストしました)
お礼
ご回答ありがとうございます。 AWKを使うケールの例を挙げて頂けることは可能でしょうか? お願いします。