• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Ruby】テキスト置換を1ファイル完結にしたい)

【Ruby】テキスト置換を1ファイル完結にしたい

このQ&Aのポイント
  • 現在のやり方だとファイルを開いて1行ずつ読み込んで新しいファイルに文字列を書きだしており、読み込んだ際、置換対象の文字列があった場合に置換して書きだしておりますが、このやり方だとどうしても新規ファイルを出力しなければいけません。
  • 新規ファイルを作らずにmemo.txtの中身だけを書き換えるようにするにはどのような処理にすれば良いのでしょうか?
  • Rubyを使用してテキスト置換を1ファイル完結にしたい場合、現在のやり方では新しいファイルに文字列を書きだす必要があり、新規ファイルを作らずに既存のファイルの中身だけを書き換える方法を知りたいです。

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

  • ベストアンサー
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

最も単純なのは、ファイルの内容すべてを IO.readlines などで変数に突っ込んで、置換した結果を memo.txt に上書き。

mail1
質問者

お礼

ありがとうございます。 IO.readlinesで行うことにしました。

その他の回答 (1)

回答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'

mail1
質問者

お礼

詳しく書いていただきありがとうございました。 勉強になりました

関連するQ&A