hoi*_*isu 0 command-line grep sed awk files
我知道这是一个非常简单的问题,但我正在努力寻找解决方案。
我需要在/etc/aliases文件中自动查找和替换以下部分:
# Person who should get root's mail
#root: marc
Run Code Online (Sandbox Code Playgroud)
它需要看起来像:
# Person who should get root's mail
root: someone@something.tld
Run Code Online (Sandbox Code Playgroud)
我一直无法找到解决方案。大家能不能给点建议?没必要sed。
在 GNU 系统上,你可以使用这个:
sed -i '/^#[[:blank:]]Person/{n;s/#root:[[:blank:]]\+marc/root:\tsomeone@something.tld/;}' file
Run Code Online (Sandbox Code Playgroud)
它搜索以 开头的行# Person。然后切换到下一行并替换#root:<blanks>marc为root:<tab> ...。该-i标志就地编辑文件。
-i,\+并且\t是 GNU 扩展。的标准等价物\+是更罗嗦的\{1,\}。要可移植地就地编辑文件,您需要求助于临时文件。标准的等价物\t是按字面插入制表符。