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

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

Re: [shell-script] Gerar arquivo


From: Robson Alexandre
Subject: Re: [shell-script] Gerar arquivo
Date: Wed, 14 Sep 2016 04:16:39 +0000

Faz conforme o Mestre Júlio sugeriu q é bem melhor

while IFS=. read name lastname; do

Não tem necessidade de chamar o read no condicional do while e chamar read de novo logo abaixo.


Em Qua, 14 de set de 2016 01:12, Rodrigo Cunha address@hidden [shell-script] <address@hidden> escreveu:
 

Pra mim deu ruim, acho que eu não entendi a lógica da linha


IFS=. read name lastname <<< $line;

Nunca utilizei isso...mas queria colocar em teste no meu ambiente para
analisar com calma.



Em 14 de setembro de 2016 00:52, Robson Alexandre address@hidden
[shell-script] <address@hidden> escreveu:



>
>
> Rodrigo,
>
> Troca o $1 pelo caminho do arquivo de entrada, no caso o GrupoTeste.
>
> Vc não pode tirar o $1 pois o while vai ficar esperando algo de stdin.
>
> Atenciosamente
> Robson Alexandre
>
> Em Ter, 13 de set de 2016 22:50, Rodrigo Cunha address@hidden
> [shell-script] <address@hidden> escreveu:
>
>>
>>
>> Deu certo para todo mundo a implementação do script?
>>
>> Em 13 de setembro de 2016 14:02, Rodrigo Cunha <address@hidden
>> >
>> escreveu:
>>
>>
>>
>> >
>> > ​
>> >
>>
>> > Em 13 de setembro de 2016 13:21, Gilberto Nunes
>> address@hidden
>> > [shell-script] <address@hidden> escreveu:
>> >
>> >>
>> >>
>> >> Obrigado a todos pela dica.
>> >> A que mais me serviu foi mesmo a do Casanova!
>> >> Te devo essa! Obrigado
>> >>
>> >> Em 13 de setembro de 2016 12:10, Alfredo Casanova address@hidden
>> >> [shell-script] <address@hidden> escreveu:
>> >>
>> >>>
>> >>>
>> >>> o $1 é argv. Você tem que chamar o script passando o arquivo como
>> >>> parâmetro:
>> >>>
>> >>> $ cat GrupoTeste
>> >>> usuario.teste
>> >>> usuario2.teste2
>> >>> usuario3.teste3
>> >>> usuario4.teste4
>> >>> usuario5.teste5
>> >>>
>> >>> e depois:
>> >>>
>> >>> $ ./grupo GrupoTeste
>> >>>
>> >>>
>> >>> On Tue, Sep 13, 2016 at 12:05 PM Rodrigo Cunha
>> address@hidden
>> >>> [shell-script] <address@hidden> wrote:
>> >>>
>> >>>>
>> >>>>
>> >>>> Esse script do casanova ta dando output de ambiguidade:
>> >>>> done < $1
>> >>>> $ linha 11: $1: redirecionamento ambíguo
>> >>>> Quando eu tiro o $1 ele não para de processar, sinceramente não
>> entendi
>> >>>> o $1 depois do done com redirecionamento.
>> >>>>
>> >>>>
>> >>>> Em 13 de setembro de 2016 10:25, Alfredo Casanova
>> address@hidden
>> >>>> [shell-script] <address@hidden> escreveu:
>> >>>>
>> >>>>>
>> >>>>>
>> >>>>> Sem tempo pra participar muito, mas sempre lendo pra aprender esses
>> >>>>> macetes.
>> >>>>> Não importa o quanto a gente ache que saiba, o Julio sempre vem com
>> >>>>> alguma coisa que vai facilitar mais ainda o trabalho hahaha
>> >>>>>
>> >>>>>
>> >>>>> On Tue, Sep 13, 2016 at 9:12 AM 'Julio C. Neves'
>> address@hidden
>> >>>>> [shell-script] <address@hidden> wrote:
>> >>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> Fala Casanova, andas meio sumido, heim!
>> >>>>>>
>> >>>>>> Olha só, dá para diminuir um pouquinho e estou metendo a minha
>> colher
>> >>>>>> de pau na tua receita, pq esse macete não é muito conhecido. As
>> linhas:
>> >>>>>>
>> >>>>>> while read line; do
>> >>>>>> IFS=. read name lastname <<< $line;
>> >>>>>>
>> >>>>>> Podem ser substituídas por:
>> >>>>>>
>> >>>>>> while IFS=. read name lastname; do
>> >>>>>>
>> >>>>>> Dispensando dessa forma um here strings e a criação/alimentação de
>> >>>>>> $line
>> >>>>>>
>> >>>>>> Acho esse macete de trocar o valor de uma variável para executar
>> >>>>>> somente uma instrução, o maior barato. O novo valor da variável
>> (no caso
>> >>>>>> $IFS) perdurará somente durante a execução do read. Veja esse
>> outro exemplo:
>> >>>>>>
>> >>>>>> $ date
>> >>>>>> Ter Set 13 09:01:54 BRT 2016
>> >>>>>> $ LANG=en_EN date
>> >>>>>> Tue Sep 13 09:02:10 BRT 2016
>> >>>>>> $ date
>> >>>>>> Ter Set 13 09:02:15 BRT 2016
>> >>>>>>
>> >>>>>> Ou seja meu cmd date veio em pt_BR, troquei o idioma para inglês
>> >>>>>> (britânico - en_EN) só para executar o novo date e logo após vimos
>> que o
>> >>>>>> date continuava em pt_BR.
>> >>>>>>
>> >>>>>> Abcs,
>> >>>>>> Julio
>> >>>>>> *@juliobash*
>> >>>>>>
>> >>>>>> *Próximos cursos de Shell*
>> >>>>>> *Cidade Local Período*
>> >>>>>> *​*
>> >>>>>> *São Paulo 4Linux
>> >>>>>> <https://www.4linux.com.br/curso/programacao-em-shell-script>
>> 05-09/12*
>> >>>>>> Dou treinamento de *Shell* em qualquer cidade.
>> >>>>>> Para mais detalhes, me mande um e-mail <address@hidden>.
>>
>> >>>>>>
>> >>>>>>
>> >>>>>> Em 12 de setembro de 2016 12:43, Alfredo Casanova
>> >>>>>> address@hidden [shell-script] <address@hidden.
>> br>
>> >>>>>> escreveu:
>> >>>>>>
>> >>>>>>
>> >>>>>>>
>> >>>>>>> corrigindo, faltou um cifrão
>> >>>>>>> cat grupo
>> >>>>>>> #!/bin/bash
>> >>>>>>> while read line; do
>> >>>>>>> IFS=. read name lastname <<< $line;
>> >>>>>>> echo "1- Username: $line
>> >>>>>>> 2- givenname: ${name^}
>> >>>>>>> 3- surname: ${lastname^}
>> >>>>>>> 4- OU: ${1/Grupo/}
>> >>>>>>> 5- Group: $1
>> >>>>>>> 6- Password: ${name}@$lastname
>> >>>>>>> "
>> >>>>>>> done < $1
>> >>>>>>>
>> >>>>>>> ./grupo GrupoTeste
>> >>>>>>> 1- Username: usuario.teste
>> >>>>>>> 2- givenname: Usuario
>> >>>>>>> 3- surname: Teste
>> >>>>>>> 4- OU: Teste
>> >>>>>>> 5- Group: GrupoTeste
>> >>>>>>> 6- Password: usuario@teste
>> >>>>>>>
>> >>>>>>> 1- Username: usuario2.teste2
>> >>>>>>> 2- givenname: Usuario2
>> >>>>>>> 3- surname: Teste2
>> >>>>>>> 4- OU: Teste
>> >>>>>>> 5- Group: GrupoTeste
>> >>>>>>> 6- Password: usuario2@teste2
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Mon, Sep 12, 2016 at 12:42 PM Alfredo Casanova <
>> >>>>>>> address@hidden> wrote:
>> >>>>>>>
>> >>>>>>>> $ cat grupo
>> >>>>>>>> #!/bin/bash
>> >>>>>>>> while read line; do
>> >>>>>>>> IFS=. read name lastname <<< $line;
>> >>>>>>>> echo "1- Username: $line
>> >>>>>>>> 2- givenname: ${name^}
>> >>>>>>>> 3- surname: ${lastname^}
>> >>>>>>>> 4- OU: ${1/Grupo/}
>> >>>>>>>> 5- Group: $1
>> >>>>>>>> 6- Password: ${name}@lastname
>> >>>>>>>> "
>> >>>>>>>> done < $1
>> >>>>>>>>
>> >>>>>>>> $ cat GrupoTeste
>> >>>>>>>> usuario.teste
>> >>>>>>>> usuario2.teste2
>> >>>>>>>>
>> >>>>>>>> $ chmod +x grupo
>> >>>>>>>> $ ./grupo GrupoTeste
>> >>>>>>>> ./grupo GrupoTeste
>> >>>>>>>> 1- Username: usuario.teste
>> >>>>>>>> 2- givenname: Usuario
>> >>>>>>>> 3- surname: Teste
>> >>>>>>>> 4- OU: Teste
>> >>>>>>>> 5- Group: GrupoTeste
>> >>>>>>>> 6- Password: usuario@lastname
>> >>>>>>>>
>> >>>>>>>> 1- Username: usuario2.teste2
>> >>>>>>>> 2- givenname: Usuario2
>> >>>>>>>> 3- surname: Teste2
>> >>>>>>>> 4- OU: Teste
>> >>>>>>>> 5- Group: GrupoTeste
>> >>>>>>>> 6- Password: usuario2@lastname
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> On Mon, Sep 12, 2016 at 11:08 AM Robson Alexandre
>> >>>>>>>> address@hidden [shell-script] <
>> >>>>>>>> address@hidden> wrote:
>> >>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> Olá Gilberto,
>> >>>>>>>>>
>> >>>>>>>>> Outro detalhe q vc talvez tenha esquecido de informar é de onde
>> vc
>> >>>>>>>>> vai buscar as informações de 2 a 6?
>> >>>>>>>>>
>> >>>>>>>>> 1 - username = usuario.teste
>> >>>>>>>>> 2 - givenname = Usuario
>> >>>>>>>>> 3 - surname = Teste
>> >>>>>>>>> 4 - ou = Teste
>> >>>>>>>>> 5 - group = GrupoTeste
>> >>>>>>>>> 6 = password = usuario@teste
>> >>>>>>>>>
>> >>>>>>>>> Seria do próprio arquivo? Seria do sistema? Seria de alguma
>> outra
>> >>>>>>>>> fonte de informação?
>> >>>>>>>>>
>> >>>>>>>>> É interessante q se tenha um modelo de entrada do arquivo e o
>> >>>>>>>>> modelo de saída desejado.
>> >>>>>>>>> Como o Rodrigo já escreveu o AWK nesses casos tem melhor
>> >>>>>>>>> performance de execução e resultados. Mas às vezes um simples
>> while com
>> >>>>>>>>> read já resolve tudo.
>> >>>>>>>>>
>> >>>>>>>>> Atenciosamente
>> >>>>>>>>> Robson Alexandre
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> Em Seg, 12 de set de 2016 10:41, Gilberto Nunes
>> >>>>>>>>> address@hidden [shell-script] <
>> >>>>>>>>> address@hidden> escreveu:
>> >>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> Opa...
>> >>>>>>>>>>
>> >>>>>>>>>> Olá Rodrigo...
>> >>>>>>>>>>
>> >>>>>>>>>> Já estou indo nessa direção de desenvolver algo aqui.
>> >>>>>>>>>> Estou pensando em usar laço for, cat e sed pra fazer isso...
>> >>>>>>>>>>
>> >>>>>>>>>> Mas obrigado pelo seu retorno...
>> >>>>>>>>>> Quando conseguir algo ou tiver alguma duvida, entro em contato.
>> >>>>>>>>>>
>> >>>>>>>>>> Obrigado
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> Em 12 de setembro de 2016 10:30, Rodrigo Tenorio
>> >>>>>>>>>> address@hidden [shell-script] <
>> >>>>>>>>>> address@hidden> escreveu:
>> >>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> Desculpaê, mas não sou mágico, nem mesmo tenho bola de
>> cristal...
>> >>>>>>>>>>>
>> >>>>>>>>>>> Pesquise sobre sed, ou substring, ou awk no google.
>> >>>>>>>>>>> Ao menos tente desenvolver algo com seu próprio esforço e
>> depois
>> >>>>>>>>>>> peça esclarecimentos sobre sua dúvida com um pedido de ajuda
>> melhor
>> >>>>>>>>>>> formulado.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Um caminho de pedra... https://www.gnu.org/s
>> >>>>>>>>>>> oftware/gawk/manual/gawk.html
>> >>>>>>>>>>>
>> >>>>>>>>>>> :)
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> Em 12 de setembro de 2016 10:03, Gilberto Nunes
>> >>>>>>>>>>> address@hidden [shell-script] <
>> >>>>>>>>>>> address@hidden> escreveu:
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Olá amigos...
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Eu preciso gerar a seguinte informação:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Exemplo:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Tenho arquivos chamado GrupoTeste
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Dentro deste arquivo está:
>> >>>>>>>>>>>> usuario.teste
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Além de vários outros.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Preciso usar sed, cat ou seja lá que mágica for, para gerar
>> um
>> >>>>>>>>>>>> saída com 6 parametros:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> 1 - username = usuario.teste
>> >>>>>>>>>>>> 2 - givenname = Usuario
>> >>>>>>>>>>>> 3 - surname = Teste
>> >>>>>>>>>>>> 4 - ou = Teste
>> >>>>>>>>>>>> 5 - group = GrupoTeste
>> >>>>>>>>>>>> 6 = password = usuario@teste
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Alguém pode me ajudar???
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Agradeço muitíssimo!
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Obrigado
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> --
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Gilberto Ferreira
>> >>>>>>>>>>>> +55 (47) 9676-7530
>> >>>>>>>>>>>> Skype: gilberto.nunes36
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> --
>> >>>>>>>>>>
>> >>>>>>>>>> Gilberto Ferreira
>> >>>>>>>>>> +55 (47) 9676-7530
>> >>>>>>>>>> Skype: gilberto.nunes36
>> >>>>>>>>>>
>> >>>>>>>>>> --
>> >>>>>>>>> Atenciosamente
>> >>>>>>>>>
>> >>>>>>>>> Robson Alexandre
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Atenciosamente,
>> >>>> Rodrigo da Silva Cunha
>> >>>>
>> >>>>
>> >>
>> >>
>> >> --
>> >>
>> >> Gilberto Ferreira
>> >> +55 (47) 9676-7530
>> >> Skype: gilberto.nunes36
>> >>
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > Atenciosamente,
>> > Rodrigo da Silva Cunha
>> >
>> >
>>
>> --
>> Atenciosamente,
>> Rodrigo da Silva Cunha
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>> --
> Atenciosamente
>
> Robson Alexandre
>
>
>

--
Atenciosamente,
Rodrigo da Silva Cunha

[As partes desta mensagem que não continham texto foram removidas]

--
Atenciosamente

Robson Alexandre

reply via email to

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