我有一个搜索字符串,例如&& !this.peekStartsWith('//')
,并希望用空格代替。
我尝试过
sed -i 's/&& !this.peekStartsWith('\/\/')/ /g' dist/vendor.bundle.js
但是,出现类似
的错误bash:!this.peekStartsWith:未找到事件
任何人都可以帮助解决此问题吗?
答案 0 :(得分:4)
我可以重现该错误。您首先需要按以下步骤关闭history
,因为放置在!
命令中的文本中有sed
会导致此错误。
set +o history
现在,当您按以下方式运行sed
命令时,它运行良好。
echo "test && !this.peekStartsWith('//') bla" | sed "s|&& !this\.peekStartsWith('//')||g"
test bla
要重新启动history
,您可以使用:
set -o history
答案 1 :(得分:1)
只有在转义!
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