テキストファイルがあり,それの編集,例えば文字列置換をしたいとします.具体的に

  • 6 を 9 にすべて置換したい

sed でも vim -c '%s/6/9/g' -c ':wq' origfile でもできるでしょうが,実際の処理はもう少し複雑で,sed は turing complete とはいえ たとえば Python で処理全体を書きたいです.[回答は Python 以外の言語についてでも大丈夫です]

この場合に,(元の文字列)→(処理後の文字列)の変換は問題なく書けますが,その結果をファイルに反映する処理をどうするのがよいのか迷っています.「一行ごと(でも何でも)元のファイルを読み込み,処理後の文字列を全部一時ファイルに書き込み,mv tempfile original」というのが唯一思いつく(そしてきちんと動く)方法なのですが,必ずファイルを全コピー相当になってしまうのが無駄が多いような気もしてしまいます.ごくごく直観的,そしてナイーブには変更のあったところだけ書き込みたい(原理的に無理な気がしてきていますが).底まで行かずともなにかうまい方法はありませんか,それともこれで正しいやり方なのでしょうか.