以最简单的方式添加评论字符

Ste*_*230 5 comments sed

我想在文件中搜索特定字符串,然后在该字符串的开头添加注释。但我需要一个避免正则表达式、全局变化和所有其他花哨东西的答案。

我写了这一行:

sed -i.bak '/PermitRootLogin no/# PermitRootLogin no/' ./sshd_config
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

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

我认为问题是我需要转义 # 字符,但我没有找到任何有关如何执行此操作的资源,甚至没有提及它。我尝试过将 ^ 或 \ 或 \^ 放在 # 前面的各种组合,但我没有得到正确的结果。

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

Mat*_*att 2

正如 @mlt 的评论中所指出的,您可以尝试在 sed 命令的开头添加 s 。直接来自他的评论:

s/PermitRootLogin....
Run Code Online (Sandbox Code Playgroud)

我看到你说你是故意重复测试来替换的。如果您的意思是希望它是相同的,也许可以考虑对匹配的文本进行分组。我理解您的意思可能是您只想手写。无论如何,以下是如何匹配分组文本并添加注释字符:

s/(PermitRootLogin)/# \1/ 
Run Code Online (Sandbox Code Playgroud)

括号表示匹配的文本应被视为一个组,\1 表示您要将匹配的组放在那里。

我希望这可以帮到你。快乐编码!如果您有任何疑问,请发表评论。