sedでやれという話ではあるけれど、最近Rubyのワンライナーに凝っているので書いた。 以下の1行でtest.txt中のfooをbarに置換して上書きする。
ruby -i -pe '$_.gsub!("foo", "bar")' test.txt
Rubyワンライナーでは頻出の、以下3つのオプションの合わせ技になっている。
- -i インプレース編集モード。ファイルの内容を評価結果で置き換える。
- -p 行単位で処理を行い行毎に変数
$_
の内容を出力する。 - -e コマンドラインからスクリプトを指定する。