교체를 시도 중
window.location = '/loft-run'+ResourceManager.hotlegs + mainPage + ".html#" + newhash;
도착하다
window.location = ResourceManager.hotlegs + mainPage + ".html#" + newhash;
파일에서. 내가 뭘 시도한 거야?
sed -i 's~/loft-run'+ResourceManager.hotlegs + mainPage + ".html#" + newhash"~ResourceManager.hotlegs + mainPage + ".html#" + newhash"' Warmblanket.js
몇 가지 sed 명령을 시도했지만 별로 도움이 되지 않았습니다. 귀하의 제안은 큰 도움이 될 것입니다.
답변1
이와 같이:
sed -i "s@'/loft-run'\+@@" warmblanket.js
- 대체의 기본 형태는
s/before/after/
- 사용큰따옴표치료를 원하시면아포스트로피
@
여기에서 기본 대신 구분 기호를 선택/
하면 대부분의 ASCII 테이블을 선택할 수 있습니다.
답변2
sed는 리터럴 문자열에 대해서는 모르고 정규식과 역참조가 활성화된 텍스트만 모릅니다. 리터럴 문자열에 대한 작업을 수행하려면 awk와 같이 해당 문자열을 이해하는 도구를 사용하세요.
$ cat file
window.location = '/loft-run'+ResourceManager.hotlegs + mainPage + ".html#" + newhash;
$ awk \
-v old="window.location = '/loft-run'+ResourceManager.hotlegs + mainPage + \".html#\" + newhash;" \
-v new='window.location = ResourceManager.hotlegs + mainPage + ".html#" + newhash;' \
's=index($0,old) { $0=substr($0,1,s-1) new substr($0,s+length(old)) } 1' file
window.location = ResourceManager.hotlegs + mainPage + ".html#" + newhash;
"
문자열에 s가 포함되어 있고 쉘이 --delimited 문자열에서 s를 허용하지 않기 때문에 대신 문자열 주위에 가 사용됩니다 .'
old=...
'
'
'