$ cut -d: -f1 /etc/passwd | sort | uniq -d
Isso irá extrair o primeiro campo (os nomes de usuários) do arquivo : -delimited /etc/passwd , classificar o resultado e reportar quaisquer duplicatas.
Para obter também o UID e o restante das entradas passwd duplicadas:
cut -d: -f1 /etc/passwd | sort | uniq -d |
while read -r username; do
grep "^$username:" /etc/passwd
done
Para obter apenas os nomes de usuário duplicados e seu UID:
cut -d: -f1 /etc/passwd | sort | uniq -d |
while read -r username; do
awk -F: -vu="$username" '$1 == u { print $1, $3 }' /etc/passwd
done
Uma breve nota sobre seu roteiro. A sintaxe parece basicamente ok, mas você precisa de ; após break e há um espaço após \ (isso pode ser um erro de recortar e colar (agora removido por uma edição) )). Além disso, eu evitaria dar caminhos completos para os utilitários padrão se não houver uma boa razão para isso, e o programa awk não exigirá o GNU awk , então apenas awk fará.