次のスクリプトを使用していますが、予期しない出力が表示されます。
perl -pi -e '/DB_CHARSET/ and $_.="define('SOMETHING'/, true);\n"' file.txt
このコマンドは追加しますdefine(SOMETHING, true);
テキストが「で始まり、その中に」があるので、「SOMETHINGをエスケープしてで終わるようにするにはどうすればよいですかdefine('SOMETHING', true)
?
私はいつもの\を試しましたが、役に立ちませんでした。
ベストアンサー1
'
それぞれをに変更できます'\''
。しかし、これはすぐに醜くなる可能性があります。
より良いアイデアは、スクリプトにここでドキュメントを使用することです。
perl -pi - <<'EOT' file.txt
/DB_CHARSET/ and $_.="define('SOMETHING'/, true);\n"
EOT
周囲の引用符を参照してくださいEOT
。 here 文書の終端が (単一引用符または二重引用符) 内にない場合、$
開始変数、算術置換、バックティックなどは here 文書から拡張されます。これは、単一引用符のみが変数の拡張を防ぐPerlのここのドキュメントとは少し異なります。