나는 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"