使用删除和 sed 命令

使用删除和 sed 命令

我的 /etc/aliases 文件需要编辑,但由于我在 100 多个主机上有相同的文件,我只想编写它的脚本并使其运行。我有几个别名条目,在其中一个条目中我想删除用户和逗号分隔符,如下所示:

alias_name1:    [email protected],[email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]

所以如果我只想删除“,[电子邮件受保护]” 在“alias_name1”而不是“alias_name2”中,我该怎么做,因为我现在拥有的唯一示例是从整个文件中删除该字符串,或者从文件中的特定行中删除该字符串,因为某些文件具有不同数量的行也不起作用。

答案1

只删除但不删除 ",[email protected]""alias_name1""alias_name2"

sed方法:

sed -E '/^alias_name1/ s/,name2@example\.com(,?)/\1/' /etc/aliases

第一个捕获组的技巧(...)也适用于数字位于行尾或中间的情况。,[email protected]


输出:

alias_name1:    [email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]

答案2

您可以在sed替换命令前面加上搜索参数:

sed '/search_string/ s/remove_string//'

上面的命令将仅对与/search_string/正则表达式匹配的行进行操作,并用空字符串替换匹配的内容remove_string

相关内容