Obtendo nomes de grupos para lista de usuários

2

Eu tenho arquivos de texto com uma lista de usuários formatados como:

name1   
name2   
name3   
...

Chamar os grupos de comandos fornece o nome do grupo principal para esse usuário. ex:

bash$ groups name1
name1: group_Name

Eu quero pegar os grupos de todos os usuários do arquivo de texto e colocar essa lista de grupos em um novo arquivo de texto.

Alguém sabe um comando para isso? Talvez um script repita o primeiro arquivo com os nomes e chama grupos em cada nome e, em seguida, armazene a saída em um novo arquivo. Eu só preciso de uma pequena ajuda com os detalhes.

    
por Syrianthunder10 03.06.2015 / 22:32

2 respostas

3

Leia o arquivo linha por linha, chame groups para cada item:

while read name ; do groups "$name" ; done < list.txt > with_groups.txt

Os loops muitas vezes podem ser substituídos por xargs :

xargs groups < list.txt > with_groups.txt
    
por 03.06.2015 / 22:40
0

Que tal algo como isto:

#!/bin/bash
while read ID
do 
    groups $ID
done < input.file |
awk '{print $3}' | sort | uniq > list_of_groups

Isso faz com que você tenha uma lista única de nomes de grupos lexicalmente classificados.

    
por 03.06.2015 / 23:01