Bash 我正在尝试用组名替换UNIX中的组号
我必须编写skrypt,它将显示文件/etc/passwd,这就是为什么GroupID将通过GroupName进行交换 我有两个文件,看起来像: ->/etc/passwd结构:UserName:x:UserID:GroupID:description:homeFile:default解释器 ->/etc/集团结构:Bash 我正在尝试用组名替换UNIX中的组号,bash,unix,etcpasswd,Bash,Unix,Etcpasswd,我必须编写skrypt,它将显示文件/etc/passwd,这就是为什么GroupID将通过GroupName进行交换 我有两个文件,看起来像: ->/etc/passwd结构:UserName:x:UserID:GroupID:description:homeFile:default解释器 ->/etc/集团结构: GroupName:x:GroupID:AdditionalUsers您可以通过awk处理/etc/group和/etc/passwd来实现这一点 awk -F: 'NR==FNR
GroupName:x:GroupID:AdditionalUsers您可以通过awk处理/etc/group和/etc/passwd来实现这一点
awk -F: 'NR==FNR { grp[$3]=$1 } NR != FNR { OFS=":";$4=grp[$4] }1' /etc/group /etc/passwd
将字段分隔符设置为:然后读取/etc/group文件(NR==FNR)。创建一个数组grp,该数组由组ID索引,组名称作为每个条目的内容。然后处理/etc/passwd(NR!=FNR)。对于每一行,获取组ID(第四个分隔字段),并将其替换为grp[$4]的内容,相应地设置输出字段分隔符(OFS)。使用1打印修改后的行