正在尝试更换
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/
- 使用双引号如果你想治疗单引号
- 这里选择
@
分隔符而不是 basic/
,你可以拾取大部分 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 并且 shell 不允许在 - 分隔的字符串中使用 s 。'
old=...
'
'
'