Em 7 de março de 2010 13:56, Deivid <[email protected]> escreveu: > Pessoal se puderem ajudar agradeço. > > A situação é a seguinte: > considerem o arquivo teste.txt > > r...@server#cat teste.txt > Login;Descricao do Grupo;Descricao do Login;Home;Shell > deivid;Grupo do Suporte;Deivid Vilela;/home/deivid;/bin/bash > r...@server# > > Preciso usar este arquivo para criar usuários em lote. > um "for" resolveria perfeitamente se não fosse por um detalhe simples, eu não > consigo trazer o conteúdo das colunas 2 e 3 com os espaços. > O "for" quebra isso em dados diferentes. > > Vejam > > r...@server#cat teste.sh > #!/bin/bash > > echo "------------------------------------------------" > echo "Saida do awk sem o for" > awk '{ split ($0, a, ";"); print a[2] }' teste.txt > echo "------------------------------------------------" > echo "Saida do awk quando armazenado na variavel \$conta" > for conta in $(awk '{ split ($0, a, ";"); print a[2] }' teste.txt) > do > echo $conta > done > echo "------------------------------------------------" > r...@server# > > Vejam a saída que esse script produz: > r...@server#./teste.sh > ------------------------------------------------ > Saida do awk sem o for > Descricao do Grupo > Grupo do Suporte > ------------------------------------------------ > Saida do awk quando armazenado na variavel $conta > Descricao > do > Grupo > Grupo > do > Suporte > ------------------------------------------------ > r...@server# > > Se alguem conhecer uma forma de trazer o resultado com os espaços dentro do > "for" serei muito grato ;-) > > > > > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: [email protected] > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > >
Há n formas de fazer isto, mas as mais fáceis envolvem a utilização do IFS (Input Field Separator), que no seu caso é o caracter ; Uma forma IFS=";"; while read a b c d e; do echo $b; done < arquivo Descricao do Grupo Grupo do Suporte Outra forma IFS=";"; while read; do set - $REPLY; echo $2; done < arquivo Descricao do Grupo Grupo do Suporte -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP
