複数ファイル内文字列を一括置換する方法
2006年10月14日 プログラミングTIPS
Linuxを使っている場合の「複数ファイル内文字列を一括で置換する方法」のメモです。
sedとforコマンドを使って一気に処理させます。
変換元ファイルをバックアップファイル(.bak)にコピーし、置換処理後のファイルを変換元ファイルに上書きします。
拡張子を変えればtxtファイルだけではなく、htmlファイルやphpファイルなどにも対応できます。
もしも予定していた通りに変換できなかった場合は、.bakファイルから元に戻します。
予定していた通りに変換できたら、.bakファイルを削除すれば完了です。
特定の行頭文字列から始まる行を処理したい場合などは、正規表現を使って
などとすれば、より条件を絞ることができます。
正規表現については、
辺りを参照すればいろいろなパターンに対応できるはずです。
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
などとすれば、より条件を絞ることができます。
正規表現については、
辺りを参照すればいろいろなパターンに対応できるはずです。