![SED - 查找并替换为特殊字符(#、%)](https://linux22.com/image/71713/SED%20-%20%E6%9F%A5%E6%89%BE%E5%B9%B6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%EF%BC%88%23%E3%80%81%25%EF%BC%89.png)
我知道这是一个非常简单的问题,但我正在努力寻找解决方案。
我需要在文件中自动查找并替换/etc/aliases
以下部分:
# Person who should get root's mail
#root: marc
它需要看起来像这样:
# Person who should get root's mail
root: [email protected]
而且我一直没能找到解决办法。你们能提出一些建议吗?没必要这样sed
。
答案1
在 GNU 系统上,您可以使用以下命令:
sed -i '/^#[[:blank:]]Person/{n;s/#root:[[:blank:]]\+marc/root:\[email protected]/;}' file
它搜索以 开头的行# Person
。然后切换到下一行并替换#root:<blanks>marc
为root:<tab> ...
。该-i
标志会就地编辑文件。
-i
、\+
和\t
是 GNU 扩展。的标准等效项\+
是更冗长的\{1,\}
。要就地编辑文件,您需要使用临时文件。标准等效项\t
是按字面插入制表符。