$ 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á.