交換してsed
いますurl(\'test.png\')
url(\'/navigation/test.png\')
このコマンドを使用するとうまく動作します
sed -i "s#url(\\\'#url(\\\'/navigation/#g" "main.js"
/
しかし、すでに次に始まるURLステートメントを除外したいと思います。url(\'/favicon.png\')
可能ですかsed
?
答え1
鍵となるのは、正規表現でより多くのコンテキストを提供することです。
sed -e "s#\\(url(\\\\'\\)\\(test.png\\\\')\\)#\1/navigation/\2#g"
また注:
- 二重引用符の中には
'
特別なものはありません。 \\
二重引用符の中に\
。
答え2
これを使用して、[^/]
スラッシュを除くすべての文字をurl(\'[^/]
コマンドのパターンに一致させることができますs
。これはもちろん最初の文字を破壊するので、\([^/]\)
置換から保存できるようにサブ式を作成する必要があります。\1
sed -i "s#url(\\\'\\([^/]\\)#url(\\\'/navigation/\\1#g" "main.js"
もう一つの試みは常に交換することですが、すでにスラッシュがある場合は元に戻すことです。
sed -i "s#url(\\\'#url(\\\'/navigation/#g;s#navigation//##g" "main.js"