Como você está fazendo a pesquisa por GID, não pelo grupo nome , e você está interessado apenas no primário GID para cada usuário, isso é trivialmente fácil com Awk.
O formato de /etc/passwd
é descrito em man 5 passwd
. Para citar a página man:
There is one entry per line, and each line has the format:
account:password:UID:GID:GECOS:directory:shell
Então você quer imprimir o primeiro campo para cada linha onde o campo quarto é o que é passado para o seu script. Onde "campos" são delimitados por dois pontos.
Pessoalmente, eu não me incomodaria com um roteiro para isso; Eu usaria uma função shell. Veja:
Então tudo que você precisa é:
- Um entendimento da opção
-F
do Awk - Um entendimento básico da sintaxe do Awk, que é
condition {action}
- Uma compreensão de como fazer referência a campos ao usar o Awk e
- Isso ajudará se você tiver uma compreensão de como passar as variáveis do shell para Awk; veja a opção
-v
do Awk.
Verifique a página man do Awk para obter esses pontos.
Eu não farei sua lição de casa para você - o objetivo é aprender a codificar , não aprender a copiar e colar. Mas se você ficar preso nisso, por favor, comente sobre esta questão. Eu posso adicionar um pouco mais de detalhes, se necessário. (E em uma semana ou mais eu posso atualizar para incluir uma solução completa.)
Nota: no mundo real, como você pode ver nas outras respostas, há muito mais complexidade associada à pesquisa de usuários. Muitas maneiras diferentes de os usuários poderem ser armazenados, e a contabilidade dessas complexidades pode ser ... complexa.
Mas sua pergunta parece ser uma tarefa feita sob medida para ser facilmente realizada com o Awk, além de ser um aplicativo realista que seria útil no mundo real.