Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我正在尝试用组名替换UNIX中的组号_Bash_Unix_Etcpasswd - Fatal编程技术网

Bash 我正在尝试用组名替换UNIX中的组号

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

我必须编写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 { 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打印修改后的行