我想在文件中搜索特定字符串,然后在该字符串的开头放置注释。但我需要一个能够避免正则表达式,全局变化以及所有其他奇特东西的答案。
我写了这一行:
sed -i.bak '/PermitRootLogin no/# PermitRootLogin no/' ./sshd_config
但是我收到了错误:
sed:-e表达式#1,字符21:评论不接受任何地址
我认为问题是我需要逃避#字符,但我找不到任何关于如何做到这一点,甚至提及它的资源。我已经尝试了将#或\或\ ^放在#前面的各种组合,但我没有做到这一点。
请注意我故意重复要替换的文本。我想对这个问题提出最简单的解决方案:如何以最明显的方式将“XYX”替换为“#XYZ”。
答案 0 :(得分:1)
如@mlt的评论中所示,您可以尝试在sed命令的开头添加一个s。直接发表评论:
s/PermitRootLogin....
我看到你说你有意重复要更换的测试。如果你的意思是,你希望它是相同的,也许可以考虑对匹配的文本进行分组。我知道你可能意味着你只需要手动打字。无论如何,这里是如何匹配分组文本并添加注释字符:
s/(PermitRootLogin)/# \1/
parens表示匹配的文本应该被认为是一个组,\ 1表示你想把那个匹配的组放在那里。
我希望这很有帮助。快乐的编码!如果您有任何疑问,请发表评论。