- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Ruby】テキスト置換を1ファイル完結にしたい)
【Ruby】テキスト置換を1ファイル完結にしたい
このQ&Aのポイント
- 現在のやり方だとファイルを開いて1行ずつ読み込んで新しいファイルに文字列を書きだしており、読み込んだ際、置換対象の文字列があった場合に置換して書きだしておりますが、このやり方だとどうしても新規ファイルを出力しなければいけません。
- 新規ファイルを作らずにmemo.txtの中身だけを書き換えるようにするにはどのような処理にすれば良いのでしょうか?
- Rubyを使用してテキスト置換を1ファイル完結にしたい場合、現在のやり方では新しいファイルに文字列を書きだす必要があり、新規ファイルを作らずに既存のファイルの中身だけを書き換える方法を知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最も単純なのは、ファイルの内容すべてを IO.readlines などで変数に突っ込んで、置換した結果を memo.txt に上書き。
その他の回答 (1)
- MillenniuM
- ベストアンサー率58% (42/72)
回答No.2
コマンドラインで -iオプションを使えば良いと思います。 % ruby -i -pe "$_.gsub! '俺の飯', '私のごはん'" memo.txt バックアップを残したければ -iに引数を渡して、 % ruby -i~ ... % ruby -i.bak ... とか。前者はEmacsのように memo.txt~、後者は memo.txt.bak とバックアップされます。 コマンドラインでなければ、fileutilsライブラリのmvの処理をopenのブロック後に 付け加えれば良いと思います。 require 'fileutils' ... open(...){...} FileUtils.mv 'after_memo.txt', 'memo.txt'
質問者
お礼
詳しく書いていただきありがとうございました。 勉強になりました
お礼
ありがとうございます。 IO.readlinesで行うことにしました。