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

问题描述

我必须写一个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打印修改后的行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...