Como esta é praticamente uma questão de lição de casa, não vou dar uma resposta exata. No entanto, aqui estão algumas ideias que podem levar à solução.
Muitas ferramentas permitem dividir o texto em colunas ou "campos" em caracteres específicos. No seu caso, você deseja dividir o texto em vírgulas e extrair o campo # 2. Ferramentas como awk, permitem especificar o separador de campo com a opção -F
e imprimir campos como $ 1, $ 2, $ 3, etc. cut
como o Elder Geek mencionou, é outra ferramenta para esse trabalho e pode usar -d
para campo delimitador e -fx
para campos, em que x é um número inteiro.
Tendo extraído esses campos, você desejará passar cada um deles para useradd
ou melhor adduser
, que é um script Perl projetado especificamente para facilitar a adição de usuários ao sistema. Se você estiver enviando cada nome do comando anterior via pipe para adduser
, talvez queira usar algo como
command1 | xargs adduser
No entanto, há um pequeno problema - você receberá uma string com nome e sobrenome separados por espaço. O nome de usuário típico do Unix é feito como uma única string, então eu recomendo que você envie o nome extraído por meio do comando tr -d ' '
, que exclui espaços. Dessa forma, você criará um usuário ValerieAdams, por exemplo. Dependendo de suas necessidades, isso pode ou não ser aceitável, portanto, revise os requisitos.
Além disso, como Kaz Wolfe apontou, as maiúsculas no nome de usuário não são permitidas por padrão no adduser, no entanto, é possível usar --force-badname
flag como karthic87's answer