Sed 替换/合并 etc/group 中的行

Sed 替换/合并 etc/group 中的行

我有一个来自 1 个命令的用户列表 -

getent group ldap-group|cut -c 32-700

这将给我一个表单中的用户列表

user1,user2,user3...

我想将其插入到 sshd 下的 /etc/group 中

sshd:x:74:adminuser,root

我想保留所有文本直到根目录。

我已经尝试过这个 sed 命令但它实际上并没有正确地修改文件。

sudo sed -i "s/^(sshd:x:\\d+:root,).*/\\$1(getent group ldap-group|cut -c 32-700)/" /etc/group

有人能帮助我了解 sed 语法吗?

答案1

我不会尝试用一句话来表达

groupappend=$(getent group ldap-group|cut -c 32-700)
sed -n "/^sshd:/s/$/,$groupappend/p" /etc/group

如果这对你有用那么

sed -i "/^sshd:/s/$/,$groupappend/" /etc/group

不清楚您是否会多次运行此操作,请尝试

sed -i "/^sshd/c\sshd:x:74:adminuser,root,$groupappend" /etc/group

反而。

相关内容