Sed:特殊字符的正确转义

Sed:特殊字符的正确转义

sed我正在尝试为下面的命令创建一个命令。我正在尝试v=window.location.search.match在文件中搜索并将其替换为<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

这是我到目前为止所拥有的:

sed -i.bak 's/v=window.location.search.match/\<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"\>\</script\>/d' myfile.txt

运行此命令后,我收到以下错误:

sed: -e expression #1, char 49: unknown option to `s'

我很困惑应该把每个人放在哪里\逃跑。

答案1

正如@Babyy 所指出的,如果您的表达式包含/字符,那么您可以将sed分隔符更改为不会在输入文件中找到的风险,例如|_

sed -i.bak 's|v=window.location.search.match|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

现在,如果您想替换整行,表达式的第一部分应该匹配从行开头到结尾的所有内容:

sed -i.bak 's|^.*v=window.location.search.match.*$|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

相关内容