使用sed取消注释文本不起作用

杰里博士

我正在尝试取消注释(nginx config)文件中第4行的注释。使用sed我首先尝试了grep,而regexp似乎是正确的:

$ grep ^#.*bny /etc/nginx/sites-enabled/default
#        location /bny {

但是,当我尝试使用sed#在行的开头删除时,它会失败:

$ sudo sed -i '/^#.*bny/,+3 s/^#+//' /etc/nginx/sites-enabled/default
$ grep ^#.*bny /etc/nginx/sites-enabled/default
#        location /bny {

我认为我使用相同的策略对sed的部分进行注释,并且效果很好:

sudo sed -i '/bny/,+3 s/^/#/' /etc/nginx/sites-enabled/default

即使是重复评论也没问题。取消评论后,我在做什么错?

钢铁司机

+ 是基本正则表达式(BRE)语法中的文字,因此您的替换模式无法匹配。

您可以使用s/^##*//s/^#\{1,\}//或(在GNU sed中)s/^#\+//,或使用-E-r命令行选项切换到扩展的正则表达式(ERE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章