首页 > 解决方案 > 如何使用特殊字符(如 && 和 '/')执行 SED 命令以进行搜索和替换?

问题描述

我有类似的搜索字符串&& !this.peekStartsWith('//'),想用空格替换。我努力了

sed -i 's/&& !this.peekStartsWith('\/\/')/ /g' dist/vendor.bundle.js

但是,得到一个错误,比如

bash:!this.peekStartsWith:找不到事件

任何人都可以帮助解决这个问题吗?

标签: linuxshellunixsed

解决方案


我可以重现错误。您需要history先按如下方式设置您的关闭,因为您!在您的文本中放置在sed命令中,导致此错误。

set +o history

现在,当您sed按如下方式运行命令时,它运行良好。

echo "test && !this.peekStartsWith('//') bla" | sed "s|&& !this\.peekStartsWith('//')||g"
test  bla

要重新开始history,您可以使用:

set -o history

推荐阅读