質問: #プログラム初心者です。 ### 前提・実現したいこと awkを使用して、以下のファイルを2つに分割したいと思っています。 cat org.txt @@@@@@@@@@@@ 商品:りんご 産地:青森 補足:値引きあり 出荷状況:済み @@@@@@@@@@@@ 商品:みかん 産地:静岡 出荷状況:未 @@@@@@@@@@@@ 商品:ぶどう 産地:山梨 出荷状況:済み このファイルの“出荷状況”が“済み”と“未”の場合で以下のようにファイルを分割したいのです。 cat syukka.txt @@@@@@@@@@@@ 商品:りんご 産地:青森 補足:値引きあり 出荷状況:済み @@@@@@@@@@@@ 商品:ぶどう 産地:山梨 出荷状況:済み cat misyukka.txt @@@@@@@@@@@@ 商品:みかん 産地:静岡 出荷状況:未 試したこと ------ awk初心者なのですが、配列を使うのかと試したのですが、太刀打ちできませんでした・・・ どのようにすればよいかご教授下さい。 以上、宜しくお願いします。
回答: デバッグしてないので、なんかあったらすんません ``` BEGIN{ s = "" f = 0 } /出荷状況:済み/ { f = 1 } /出荷状況:未/ { f = 2 } /@@@@@@@@@@@@/ && s != "" { if (f == 1) outf = "syukka.txt" if (f == 2) outf = "misyukka.txt" n = split(s, ss) for (i=1; i<=n; i++) { print ss[i] >> outf } s = "" f = 0 } { s = s,$0 } END { if (f == 1) outf = "syukka.txt" if (f == 2) outf = "misyukka.txt" n = split(s, ss) for (i=1; i<=n; i++) { print ss[i] >> outf } } ``` もし空白を含む行があったら改行がふえます。 --- 追記 --- ``` head -n 3 src.txt >syukka.txt cp syukka.txt misyukka.txt x=`wc -l src.txt` x=`expr $x - 3` tail -n $x src.txt | awk -f hoge.awk ```