• ベストアンサー

テキストファイルをwhileでブロック毎に処理がしたいのです。

テキストファイルをwhileでブロック毎に処理がしたいのです。 シェルスクリプトにてlinuxコマンドを使用し行いたい処理で御座います。 例 func(){ #ブロックでの処理 awk ~~~~~~ } while do sed -n -e 'スタート行,/^特定文字/p' source.txt func() done 特定文字は必ず出現し、ブロック処理を行った後特定文字の次の行がスタート行となりループを させたいのですが、どうしてもやり方が解らずめげています。 御手数お掛け致しますがどなたか教えて頂けると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

案1:func()の中はawkのようなので全部awkで処理する  awk 'BEGIN{RS="\r特定文字\r"}{ブロックの処理}' 案2:funcの処理とwhileループを一緒にする 案3: block= while read line do case "$line" in 特定文字*) echo "$block" | func ; block= ;; *) block="$block"$'\n'"$line" ;; esac done

tyoutikaramizu
質問者

補足

御回答有難う御座います。 回答内容ですが、私の説明不足により 望んだ回答ではなかったようです。 テキストファイルから特定文字から特定文字まで1ブロックずつ抽出 する処理を望んでおります。特定文字から特定文字までは複数行となります。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

No2です。 >テキストファイルから特定文字から特定文字まで1ブロックずつ抽出する処理を望んでおります。特定文字から特定文字までは複数行となります。 了解してますよ。 data1 data2 data3 @ data10 data11 @ だとして、最初はdata1~data3の3行をfuncに渡して、次にdata10~data11の2行をfuncに渡すんですよね? それに対しての回答です。

tyoutikaramizu
質問者

お礼

よくソースを理解せずに返答してしまい申し訳御座いません。 お陰さまで出来るようになりました!有難う御座いました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

自分ならあきらめて Perl で書いてるかな.

tyoutikaramizu
質問者

補足

PerlやCでは出来たのですが、どうやら私はコマンドが正規表現が苦手なようです。(泣) 諦めたらそこで試合終了という言葉が頭をよぎり、諦めることができません。

関連するQ&A

専門家に質問してみよう