Dica
Cada campo em uma linha /etc/passwd
é separado por dois pontos, e o nome de usuário é o primeiro campo, então você precisa filtrar cada linha para mostrar apenas os caracteres até os primeiros dois pontos
Resposta
grep
não está nem perto da melhor ferramenta para fazer isso, mas se você precisar usá-la, isso funcionará:
grep -oE '^[^:]+' /etc/passwd
-o
diz para retornar apenas a parte da linha correspondente. -E
ativa as expressões regulares estendidas para que o +
funcione mais tarde. ^
corresponde ao início da linha, [^:]
corresponde a qualquer coisa, exceto dois pontos, e +
significa tantos caracteres quanto possível. Então, isso vai combinar o início de cada linha até o primeiro cólon
Se você puder usar outras ferramentas além de grep
, veja outras maneiras geralmente melhores de fazer isso:
cut -d: -f1 /etc/passwd
sed 's/:.*//' /etc/passwd
awk -F: '{print $1}' /etc/passwd
Você pode redirecionar os resultados de qualquer um deles para allusers
usando > allusers
, como você tem em seu exemplo