如何使用特殊字符 && 和 '/' 执行 SED 命令以进行搜索和替换?



我有像&& !this.peekStartsWith('//')这样的搜索字符串,想用空格替换。 我试过了

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

但是,收到这样的错误

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

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

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

set +o history

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

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

要重新开始!您可以使用:

set -o history

我只有在逃脱CC_8时才能让它工作

sed "s|&& !this.peekStartsWith('//')| |g" file

示例文件

cat file
some data&& !this.peekStartsWith('//')more data

测试

sed "s|&& !this.peekStartsWith('//')||g" file
some datamore data
sed "s|&& !this.peekStartsWith('//')| |g" file
some data more data
sed "s|&& !this.peekStartsWith('//')|***|g" file
some data***more data

最新更新