[Shell] sed: ファイル内の文字列を一括置換する
シェルスクリプト内で使いそうなので、ここにカテゴライズ。
通常、出力ファイルを指定して書き換えます。
% sed 's/foo/bar/g' input.txt > output.txt
Mac OS X 上で、元ファイルを書き換えようと sed -i
オプション付きで実行したところエラーに。
% sed -i 's/foo/bar/g' input.txt
プラットフォームによっては、実行できないそう。
sed -i.bak
とすると、.bak 拡張子を付けてコピーを取ってから、元ファイルを書き換えてくれます。
% sed -i.bak 's/foo/bar/g' input.txt
例えばファイル内のサーバ名を一括置換する。
% perl -p -i.bak -e 's/www\./prev\.www\./g' *.tsv