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

sed 基本

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

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

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

grep でディレクトリ内のファイルをリストアップして,その全てを対象に置換することもできる.

grep -rlI "org" path/of/somewhere | xargs -n1 sed -i -e "s/org/new/g"
for f in `grep -rlI "org" path/of/somewhere `; do sed -i -e "s/org/new/g" $f; done

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

注意

Mac の sed で -i -e "" とオプションをつけると,上書きはされるが,別途ファイル名の後ろに -e とついた新しいファイルが生成され,これはバックアップ用の変更前ファイルになる.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2025-04-28 (Mon) 22:17:46 (55d)