问题描述
我必须写一个skrypt,它会显示文件/ etc / passwd,为什么GroupID将通过GroupName进行交换
-> / etc / passwd结构:UserName:x:UserID:GroupID:description:homeFile:DefaultInterpreter
-> / etc / group结构: 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)。创建一个由组ID索引的数组grp,其中组名作为每个条目的内容。然后处理/ etc / passwd(NR!= FNR)。对于每一行,获取组ID(第4个分隔字段),并用grp [$ 4]的内容替换它,并相应地设置输出字段分隔符(OFS)。使用1打印修改后的行。