- ベストアンサー
簡単なテキスト処理について
お世話になります。 現在プログラミングの勉強のために、単純なテキスト処理を行うためのプログラムを作ろうと考えています。 内容は・・・・・・・・ テキストデータ #################### 定型文 #################### テキストデータ #################### 定型文 #################### 以下繰り返し という内容のテキストファイルから定型文の所だけを抜き出して 新たなファイルを作るというものです。 (定型文の内容は毎回ほぼ同じ) つまり #################### 定型文 #################### #################### 定型文 #################### 以下繰り返し という内容のテキストファイルを作りたいのです。 一応大まかな流れとしては次のように考えています。 (1)読み込みモードでファイルを開く。 (2)ファイルを全て読む。 (3)ファイルを閉じる。 (4)同ファイル名で書き込みモードで開く(新規) (5)必要な分だけを書き出す。 しかし具体的にどうするかというのがわかりません。 (バッチファイルで出来ないかとも考えてみたのですが・・・・) 宜しければアドバイスを頂きたく思います。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
awk(gawk)でよければ、 awk.exe '/^#/{++i}i==0{print"";next}{print}i==2{i=0}' 入力ファイル > 出力ファイル
その他の回答 (3)
- crew21
- ベストアンサー率26% (58/222)
Perl勉強せえ。 awkもいいけど、Perlもすごいぞ。こういう処理に関しては。 えー新しい言語勉強するのん? とか思うだろけど、上っ面舐めただけで質問にあるようなのは、丁寧に書いても10行以下でできるぞ。
- station702
- ベストアンサー率60% (3/5)
awk(gawk)でよければ、 awk.exe '/#/{++i}i==0{print"";next}{print}i==2{i=0}' 入力ファイル > 出力ファイル
お礼
awkですか・・・・ 名前を聞いたことがあるくらいの知識しかないですが、面白そうなのでとりあえず動かしてみようと思います。 ありがとうございました。
- zwi
- ベストアンサー率56% (730/1282)
C言語の知識レベルがどのぐらいかで説明するレベルが変わってきます。 例えば、ファイル入出力なしで次のような配列を同様の処理をして定型文だけをprintfで出力できますか? char *text[10] = { "てきすと", " てきすと", "て き す と", "####################", "定型文1", "定型文1", "####################", "て きすと", "てきすとてきすと", "てきすと 定型文じゃないてきすと", "てきす と", "####################", "定型文2", "####################", }; ここをクリアしないとファイル入出力に行くこと自体無理があります。
お礼
ご回答ありがとうございます。 C言語の知識以前にプログラミングというものを勉強中の身です。 上記の例題を見ても 「なぜ確保されている配列の要素数は10なのに、実際の要素が14個あるのか?」 などという疑問が出てくる始末・・・・・・ どうやら時期尚早ですね。 今回はあきらめます。
お礼
ありがとうございます。 PerlというとサーバとCGIしか浮かんでこないのですが・・・・ とりあえず、もっと基本的なことを勉強してきます。