Com o comando único awk :
awk -F':' 'NR==FNR{ a[$3]=$1; next }{ print $1", "a[$4] }' /etc/group /etc/passwd
-
-F':'- separador de campos -
NR==FNR{ a[$3]=$1; next }- processando o primeiro arquivo de entrada (ou seja,/etc/group):-
a[$3]=$1- capture nome do grupo$1usando identificador de grupo$3como arrayakey -
next- pula para o próximo registro
-
-
{ print $1", "a[$4] }- ação para o segundo arquivo de entrada (por exemplo,/etc/passwd):-
$1- o primeiro campo; indicando nome de usuário -
a[$4]- obter nome do grupo por id do grupo (apresentado pelo campo$4)
-