perlで文字列を置換する方法
サンプルファイル(string.txt)
string.txt ファイルには以下の文字列が格納されているとします。
abcabc defdeF deFdef ghighi
置換の例
例. dで始まりfで終わる文字列への最長マッチ(行単位)
$ perl -p -e "s/d.+f/[replaced]/" string.txt abcabc [replaced]deF [replaced] ghighi
例. 上記の例の大文字小文字を無視
$ perl -p -e "s/d.+f/[replaced]/i" string.txt abcabc [replaced] [replaced] ghighi
例. 上記の例の最短マッチ
$ perl -p -e "s/d.+?f/[replaced]/ig" string.txt abcabc [replaced][replaced] [replaced][replaced] ghighi
例. 上記の例でマッチした文字列を置換文字列内で使用
$ perl -p -e "s/d.+?f/[$&]/ig" string.txt abcabc [def][deF] [deF][def] ghighi
例. 上記の結果を string.txt ファイルに上書きし、元のファイルを string.old ファイルに保存する
$ perl -pi.old -e "s/d.+?f/[$&]/ig" string.txt
$ cat string.txt.old abcabc defdeF deFdef ghighi