テキストファイル内の文字列の削除or置換
テキストファイル内の特定の行の文字列を全て削除し、 別の文字列を書き込みたいのですがうまくできません。 (結果的に置換するようにしたいです。)
例えば、文字列「あいうえお」と記載してあるテキストファイルが存在したとして、 以下の処理は実現できました。 ①filestrseekコマンドで「あいうえお」を検索。 ②検索結果に該当したらfileseekコマンドで文字列の長さ分、 ファイルポインタを現在地から前に移動。 (→「あいうえお」があった行の先頭にファイルポインタが移動) ③filewriteコマンドで新しい文字列「かきくけこ」を書き込む。
しかし、③で新しい文字列「わをん」を書き込んだ場合、 処理結果が「わをんえお」となってしまいます。 (新しい文字列の方が短かった場合、最初の文字列で上書きできない部分が出てくる。)
一応、ASCII文字でDELはBS等でうまく処理できないか試してみましたが、 まだできていません。
上記のような状況ですので、 ファイル内の特定の文字列を置換するコマンドか、 特定の文字列を削除するコマンドを作っていただくか、 もしくはそれらの代替方法があれば教えてください。
読み込み用と書き込み用にファイルを2つ開いて、1行ずつ変数に読み込んで、文字列を置換し、書き込み、最後にリネームすればよいのではないでしょうか。
教えて頂いた手順で解決できました。 ありがとうございます。
テキストファイル内の特定の行の文字列を全て削除し、 別の文字列を書き込みたいのですがうまくできません。 (結果的に置換するようにしたいです。)
例えば、文字列「あいうえお」と記載してあるテキストファイルが存在したとして、 以下の処理は実現できました。 ①filestrseekコマンドで「あいうえお」を検索。 ②検索結果に該当したらfileseekコマンドで文字列の長さ分、 ファイルポインタを現在地から前に移動。 (→「あいうえお」があった行の先頭にファイルポインタが移動) ③filewriteコマンドで新しい文字列「かきくけこ」を書き込む。
しかし、③で新しい文字列「わをん」を書き込んだ場合、 処理結果が「わをんえお」となってしまいます。 (新しい文字列の方が短かった場合、最初の文字列で上書きできない部分が出てくる。)
一応、ASCII文字でDELはBS等でうまく処理できないか試してみましたが、 まだできていません。
上記のような状況ですので、 ファイル内の特定の文字列を置換するコマンドか、 特定の文字列を削除するコマンドを作っていただくか、 もしくはそれらの代替方法があれば教えてください。