bash ファイル内の文字列を置換する

ファイルfoobar.txt内に含まれるorgという文字列をnewに置換した,hoge.txtというファイルを作成する場合

sed -e "s/org/new/g" ./foobar.txt > ./hoge.txt

eオプションはexpressionを指し,-eの後に置換の表現を記述する.
「/g」をつけるとファイル内でマッチしたパターン全てを置換する.「/」で終わる場合は最初にマッチした1回のみ.
ファイルに上書きするときは -i を付け加える. grepでディレクトリ内のファイル全てを対象に置換することもできる.

org="f00bar" # 置換前
new="foobar" # 置換後
grep -rlI $org . | while read file; do sed -i -e "s/$org/$new/g" $file; done

特殊文字を含む場合は,文字の前にバックスラッシュでエスケープするのを忘れないように.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-07-11 (Wed) 05:17:50 (315d)