ZAPAnet総合情報局 > ZAPAブログ2.0 > 複数ファイル内文字列を一括置換する方法

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

2006年10月14日 プログラミングTIPS
Linuxを使っている場合の「複数ファイル内文字列を一括で置換する方法」のメモです。

sedとforコマンドを使って一気に処理させます。
変換元ファイルをバックアップファイル(.bak)にコピーし、置換処理後のファイルを変換元ファイルに上書きします。

for FILE in *.txt; do cp $FILE $FILE.bak; sed -e "s/置換前文字列/置換後文字列/g" $FILE.bak > $FILE; done

拡張子を変えればtxtファイルだけではなく、htmlファイルやphpファイルなどにも対応できます。
もしも予定していた通りに変換できなかった場合は、.bakファイルから元に戻します。
予定していた通りに変換できたら、.bakファイルを削除すれば完了です。

特定の行頭文字列から始まる行を処理したい場合などは、正規表現を使って

for FILE in *.txt; do cp $FILE $FILE.bak; sed -e "/^行頭文字列/s/置換前文字列/置換後文字列/g" $FILE.bak > $FILE; done

などとすれば、より条件を絞ることができます。

正規表現については、
【 文字列を置換する「sed」 】:ITpro
【 どのような正規表現があるのか 】:ITpro
辺りを参照すればいろいろなパターンに対応できるはずです。