タグのついた記事 perl

perlで正規表現を使って置換をする時、エスケープは問題無いはずなのにエラーが出る場合はシングルクオーテーションで囲んでみる

つまり、

perl -p -i -e s/APXS2=\$\(shell which apxs2\)/APXS2=\/usr\/sbin\/apxs/g Makefile

ではだめ。

perl -p -i -e ’s/APXS2=\$\(shell which apxs2\)/APXS2=\/usr\/sbin\/apxs/g’ Makefile

こうすれば動く。
スペースが問題っぽい。

コメントを書く

perlによる文字置換

なんかsedではうまく上書きが出来なかったので。

http://blog.livedoor.jp/leaf_hiro/archives/51081124.html

perl -p -i -e 's/[検索文字列]/[置換文字列]/g' [ファイル名]
perl -p -i -e "s/[検索文字列]/[置換文字列]/g" [ファイル名]
perl -p -i -e s/[検索文字列]/[置換文字列]/g [ファイル名]

シングルクオーテーション、ダブルクオーテーション、クオーテーションなしでどう結果が違ってくるのかはよく調べてないが、とりあえずクオーテーションなしでシェルスクリプトで設定した変数がきちんと反映された。

コメントを書く