This is a sample /etc/passwd file:
$ cat passWD
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:2:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:2:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:12:news:/etc/news:
In the above file, we need to group the users(1st field) which belong to the same group (4th field)
Solution1:
$ awk -F ":" 'END { for (i in Arr) print i FS Arr[i] }
{ Arr[$4] = Arr[$4] ? Arr[$4] FS $1 : $1 }' passWD
Output:
7:lp
12:mail:news
0:root:sync:shutdown
1:bin
2:daemon:adm:halt
Solution2:
$ awk -F ":" '{
Arr[$4]=sprintf("%s:%s",Arr[$4],$1)}
END {for ( i in Arr) {printf("%s%s\n",i,Arr[i])}}
' passWD
Output:
7:lp
12:mail:news
0:root:sync:shutdown
1:bin
2:daemon:adm:halt
No comments:
Post a Comment