【问题标题】:Uncomment and comment a line of config file using sed in linux在 linux 中使用 sed 取消注释并注释一行配置文件
【发布时间】:2017-04-13 11:43:06
【问题描述】:

我的配置文件中有以下文本

<!--<URL>www.abc.com</URL>-->
         www.xyz.com

我想取消注释已注释的行并注释未注释的行。我尝试使用 sed 命令

 sed -i '/<!--<URL>www.abc.com</URL>-->/s/^#//g' filename

但出现错误

sed: -e expression #1, char 24: unknown command:/'`

如果我的 sed 命令有任何问题,请帮助解决此问题或更正。提前致谢。

【问题讨论】:

  • 评论了什么? edit 你的问题包括简洁、可测试的样本输入和给定输入的预期输出。

标签: linux unix sed


【解决方案1】:

由于您使用 '/' 作为 sed 分隔符,因此您必须在标记中对 '/' 进行转义。

例如

 sed -i '/<!--<URL>www.abc.com<\/URL>-->/s/^#//g' filename

您还可以在 sed 中切换分隔符以提高可读性more

【讨论】:

  • 同样的情况。当您有与分隔符匹配的字符时,您必须将它们转义或选择替代分隔符。
  • 它需要的不仅仅是转义分隔符。见is-it-possible-to-escape-regex-metacharacters-reliably-with-sed。在 OP 的情况下,所有那些 .s 也需要转义。当您想要搜索字符串而不是正则表达式时,正确的解决方案是只使用 awk,因为它可以理解字符串。
猜你喜欢
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 2016-01-08
相关资源
最近更新 更多