🐧 Linux 総合学習プラットフォーム
中級 ・ テキスト / 置換 / sed / grep

複数ファイルの文字列を一括置換する

設定ファイル群のドメイン名を旧から新へ全部置き換えたい。手作業では漏れる。

手順

grep -rl 'old.example.com' .まず対象ファイルを洗い出す。-r で再帰、-l で該当ファイル名だけを出す。
grep -rn 'old.example.com' .-n で行番号つき。実際にどこがどう書かれているか中身を目で確認する。
cp -r conf conf.bak置換は破壊的。実行前に必ずバックアップを取る。
grep -rl 'old.example.com' . | xargs sed -i 's/old\.example\.com/new.example.com/g'該当ファイルだけに sed -i で上書き置換。ドットは \. でエスケープ。
注意sed -i は元ファイルを直接書き換える。バックアップ必須。正規表現の特殊文字(. * /)のエスケープに注意。

使うコマンド

grepsed

▶ 学習アプリで実務レシピを使う