0

sed を使用して、サーバー上の site.js ファイルの変数を変更しようとしています。

行は次のとおりvar url = "page.php";です。whatever.php を page.php に置き換えるだけです。

これは非常に簡単で、問題なく動作すると思いました。

sed -i "s/\url = \".*\"/\url = \"page2.php\"/" /home/site.js

取得する代わりにそれを除いて問題なく動作しvar url = "page2.php";ます:var R1 = "page2.php";

ここで sed を使用すると、url 値が R1 に変更されるのはなぜですか?

4

3 に答える 3

2

\前は必要ありませんurl

sed -i -r 's#url\s*=\s*"[^"]+"#url = "page2.php"#' /home/site.js

の代わりに でsed 式を囲むことにより、余分なエスケープを"なくすことができます'"

文字列自体に含まれている可能性がある場合は、/(ここでは)よりも別の区切り記号を使用することをお勧めします#/

于 2013-10-26T19:02:35.750 に答える
1

これをやってみてください:

sed -i -r 's@(var\s+url\s*=\s*")[^"]+"@\1whatever.php"@' file.js

/区切り文字として必須ではありません。私はそこを取り上げまし@た。

于 2013-10-26T19:04:13.457 に答える