首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行SED命令的特殊字符,如&&和'/‘的搜索和替换?

如何执行SED命令的特殊字符,如&&和'/‘的搜索和替换?
EN

Stack Overflow用户
提问于 2019-12-02 05:48:50
回答 2查看 464关注 0票数 0

我有类似于&& !this.peekStartsWith('//')的搜索字符串,并希望用空格替换。我试过了

代码语言:javascript
复制
sed -i 's/&& !this.peekStartsWith('\/\/')/ /g' dist/vendor.bundle.js

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

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

有人能帮忙解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-02 06:11:59

我只有在转义!时才能让它正常工作

代码语言:javascript
复制
sed "s|&& \!this\.peekStartsWith('//')| |g" file

示例文件

代码语言:javascript
复制
cat file
some data&& !this.peekStartsWith('//')more data

测试

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-12-02 05:54:31

我可以复制错误。您需要设置history,如下所示,因为您的文本中有!,您在sed命令中放置了它,这将导致此错误。

代码语言:javascript
复制
set +o history

现在,当您按照下面的方式运行sed命令时,它运行得很好。

代码语言:javascript
复制
echo "test && !this.peekStartsWith('//') bla" | sed "s|&& !this\.peekStartsWith('//')||g"
test  bla

要再次启动history,您可以使用:

代码语言:javascript
复制
set -o history
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59133293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档