以最简单的方式添加注释字符

时间:2015-05-14 23:02:51

标签: sed comments

我想在文件中搜索特定字符串,然后在该字符串的开头放置注释。但我需要一个能够避免正则表达式,全局变化以及所有其他奇特东西的答案。

我写了这一行:

sed -i.bak '/PermitRootLogin no/# PermitRootLogin no/' ./sshd_config

但是我收到了错误:

  

sed:-e表达式#1,字符21:评论不接受任何地址

我认为问题是我需要逃避#字符,但我找不到任何关于如何做到这一点,甚至提及它的资源。我已经尝试了将#或\或\ ^放在#前面的各种组合,但我没有做到这一点。

请注意我故意重复要替换的文本。我想对这个问题提出最简单的解决方案:如何以最明显的方式将“XYX”替换为“#XYZ”。

1 个答案:

答案 0 :(得分:1)

如@mlt的评论中所示,您可以尝试在sed命令的开头添加一个s。直接发表评论:

s/PermitRootLogin....

我看到你说你有意重复要更换的测试。如果你的意思是,你希望它是相同的,也许可以考虑对匹配的文本进行分组。我知道你可能意味着你只需要手动打字。无论如何,这里是如何匹配分组文本并添加注释字符:

s/(PermitRootLogin)/# \1/ 

parens表示匹配的文本应该被认为是一个组,\ 1表示你想把那个匹配的组放在那里。

我希望这很有帮助。快乐的编码!如果您有任何疑问,请发表评论。