• ベストアンサー

簡単なテキスト処理について

お世話になります。 現在プログラミングの勉強のために、単純なテキスト処理を行うためのプログラムを作ろうと考えています。 内容は・・・・・・・・ テキストデータ #################### 定型文 #################### テキストデータ #################### 定型文 #################### 以下繰り返し という内容のテキストファイルから定型文の所だけを抜き出して 新たなファイルを作るというものです。 (定型文の内容は毎回ほぼ同じ) つまり #################### 定型文 #################### #################### 定型文 #################### 以下繰り返し という内容のテキストファイルを作りたいのです。 一応大まかな流れとしては次のように考えています。 (1)読み込みモードでファイルを開く。 (2)ファイルを全て読む。 (3)ファイルを閉じる。 (4)同ファイル名で書き込みモードで開く(新規) (5)必要な分だけを書き出す。 しかし具体的にどうするかというのがわかりません。 (バッチファイルで出来ないかとも考えてみたのですが・・・・) 宜しければアドバイスを頂きたく思います。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

awk(gawk)でよければ、 awk.exe '/^#/{++i}i==0{print"";next}{print}i==2{i=0}' 入力ファイル > 出力ファイル

その他の回答 (3)

  • crew21
  • ベストアンサー率26% (58/222)
回答No.4

Perl勉強せえ。 awkもいいけど、Perlもすごいぞ。こういう処理に関しては。 えー新しい言語勉強するのん? とか思うだろけど、上っ面舐めただけで質問にあるようなのは、丁寧に書いても10行以下でできるぞ。

dethma
質問者

お礼

ありがとうございます。 PerlというとサーバとCGIしか浮かんでこないのですが・・・・ とりあえず、もっと基本的なことを勉強してきます。

回答No.2

awk(gawk)でよければ、 awk.exe '/#/{++i}i==0{print"";next}{print}i==2{i=0}' 入力ファイル > 出力ファイル

dethma
質問者

お礼

awkですか・・・・ 名前を聞いたことがあるくらいの知識しかないですが、面白そうなのでとりあえず動かしてみようと思います。 ありがとうございました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

C言語の知識レベルがどのぐらいかで説明するレベルが変わってきます。 例えば、ファイル入出力なしで次のような配列を同様の処理をして定型文だけをprintfで出力できますか? char *text[10] = { "てきすと", " てきすと", "て き す と", "####################", "定型文1", "定型文1", "####################", "て きすと", "てきすとてきすと", "てきすと 定型文じゃないてきすと", "てきす と", "####################", "定型文2", "####################", }; ここをクリアしないとファイル入出力に行くこと自体無理があります。

dethma
質問者

お礼

ご回答ありがとうございます。 C言語の知識以前にプログラミングというものを勉強中の身です。 上記の例題を見ても 「なぜ確保されている配列の要素数は10なのに、実際の要素が14個あるのか?」 などという疑問が出てくる始末・・・・・・ どうやら時期尚早ですね。 今回はあきらめます。

関連するQ&A