shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a


From: Julio C. Neves
Subject: Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR
Date: Sat, 1 Sep 2018 12:09:50 -0300

Isso aqui deve funcionar e o sed e awk foram substituídos por shell puro:

while read Nome1 Resto # $Nome1 recebo o 1o. nome e $Resto os outros se houverem
do
    echo "dsadd user cn=$i,ou=RH,dc=vivaopinguim -samid $i -upn $address@hidden -fn $i -display ${Nome1^} -desc \"Recursos Humanos\" -pwd \"Teste@123\" -mustchpwd yes -disable no"
done < pessoa.txt

PS: O workshop de Shell das dicas-l começa hoje e é gratuito! Inscrições em http://www.dicas-l.com.br/educacao/workshop/

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 
»  Treinamento presencial (em 4 sábados) no RJ e BSB 
    em http://bit.ly/cursoshelljulioneves                   



Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.



Em sáb, 1 de set de 2018 às 11:33, address@hidden [shell-script] <address@hidden> escreveu:
 

Prezados bom dia,


Antes de começar, se colar esse conteúdo num TXT ficará melhor para ler ele.


Estou tentando formatar um txt com nomes e sobrenomes (somente para iniciar), eu tenho que pegar esses nomes e sobrenomes e coloca-los de uma forma, que irá gerar um script, para rodar num

server Windows e criar os usuários, são cerca de 200 usuário, no teste deixei apenas 2 para facilitar.


Eu fiz de duas formas, a primeira usando apenas um FOR, mas sem sobrenome, o que é ruim caso eu queira adicionar sobrenome, telefone, idade e por ai vai:


OBs.: Arquivo "pessoa.txt" tem 2 nomes, bruno silva e luana dias.


###########################################################################################################################

#!/bin/bash


# Pega o primeiro campo do arquivo pessoas (vai pegar o primeiro nome das pessoas)

nome="$(awk '{ print $1 }' pessoas.txt)"


# Usando FOR para pegar cada nome e colocar onde é $i

for i in $nome

do


echo "dsadd user cn=$i,ou=RH,dc=vivaopinguim -samid $i -upn $address@hidden -fn $i -display \"$(echo $i | sed -r 's/(.)/\U\1/')\" -desc \"Recursos Humanos\" -pwd \"Teste@123\" -mustchpwd yes -disable no"


done

###########################################################################################################################


# A expressão abaixo vai deixar a primeira letra em Maiúscula colocando entre aspas no comando echo:

\"$(echo $i | sed -r 's/(.)/\U\1/')\"

___________________________________________________________________________________________________________________________


Resultado:


dsadd user cn=bruno,ou=RH,dc=vivaopinguim -samid bruno -upn address@hidden -fn bruno -display "Bruno" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no

dsadd user cn=luana,ou=RH,dc=vivaopinguim -samid luana -upn address@hidden -fn luana -display "Luana" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no


Esse funciona bem, porém, caso eu precise adicionar mais dados, como informei acima, não vou conseguir.


___________________________________________________________________________________________________________________________


Segunda forma tentei usar um FOR encadeado.


###########################################################################################################################

#!/bin/bash


# Pega o primeiro campo do arquivo pessoas (vai pegar o primeiro nome das pessoas)

nome="$(awk '{ print $1 }' pessoas.txt)"


# Pega o segundo nome das pessoas, seria um sobrenome no caso, estou dando REV para pegar o ultimo nome pego o nome e depois dou um REV para voltar ao normal

sobrenome="$(rev pessoas.txt | awk '{ print $1 }' | rev)";


for i in $nome 

do

        for a in $sobrenome

        do

        echo "dsadd user cn=$i 20653,ou=RH,dc=vivaopinguim -samid $i -upn $address@hidden -fn $i -display \"$i $a\" -desc \"Recursos Humanos\" -pwd \"Teste@123\" -mustchpwd yes -disable no"

        done    

done 

###########################################################################################################################


Resultado:


dsadd user cn=bruno 20653,ou=RH,dc=vivaopinguim -samid bruno -upn address@hidden -fn bruno -display "bruno silva" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no

dsadd user cn=bruno 20653,ou=RH,dc=vivaopinguim -samid bruno -upn address@hidden -fn bruno -display "bruno dias" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no

dsadd user cn=luana 20653,ou=RH,dc=vivaopinguim -samid luana -upn address@hidden -fn luana -display "luana silva" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no

dsadd user cn=luana 20653,ou=RH,dc=vivaopinguim -samid luana -upn address@hidden -fn luana -display "luana dias" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no


Ele mescla os sobrenomes.

___________________________________________________________________________________________________________________________


Como eu gostaria que ficasse:


dsadd user cn=bruno 20653,ou=RH,dc=vivaopinguim -samid bruno -upn address@hidden -fn bruno -display "bruno silva" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no

dsadd user cn=luana 20653,ou=RH,dc=vivaopinguim -samid luana -upn address@hidden -fn luana -display "luana dias" -desc "Recursos Humanos" -pwd "Teste@123" -mustchpwd yes -disable no


Teriam alguma dica para me ajudar, lembrando que tem telefones, ramal e muitas outras opções, desde já, muito obrigado pela sua ajuda.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]