SED - 查找并替换为特殊字符(#、%)

SED - 查找并替换为特殊字符(#、%)

我知道这是一个非常简单的问题,但我正在努力寻找解决方案。

我需要在文件中自动查找并替换/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>marcroot:<tab> ...。该-i标志会就地编辑文件。

-i\+\t是 GNU 扩展。的标准等效项\+是更冗长的\{1,\}。要就地编辑文件,您需要使用临时文件。标准等效项\t是按字面插入制表符。

相关内容