Muito obrigado Julio!!
Denis Silva Costa Analista de Geoprocessamento "A paz não brota em um jardim com câmera e sensores..." --- Em ter, 6/10/09, Julio C. Neves <[email protected]> escreveu: De: Julio C. Neves <[email protected]> Assunto: Re: [shell-script] while não lê sem new_line Para: [email protected] Data: Terça-feira, 6 de Outubro de 2009, 9:15 Denis, somente agora entendi o que vc queria (a culpa é da falta de tempo para ler toda a thread). O teu erro era o seguinte: o IFS aceita mais deu um caractere (por padrão ele tem <espaço>, <tab> e <enter>. Qdo vc faz o IFS='\n' ele passa a quebrar a leitura a cada letra n que encontrar. $ IFS='\n' $ read a b <<< aaaanbbbb $ echo $a aaaa $ echo $b bbbb Vc poderia ter feito como fez: IFS=" " Ou simplesmente IFS=$(echo -e '\n'). Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000; - No RJ ligue (21) 2561-0867; - Turmas fechadas em outras cidades ligue (21) 8112-9988. 2009/10/6 Denis S. Costa <deniscostadsc@ yahoo.com. br> > > > consegui exatamente o que queria com esse código!!! > > oldIFS=$IFS > IFS=" > " > for i in $(cat teste.txt); do > echo "$i" > echo "One more line..." > done > IFS=$oldIFS > > mas quando eu atrinuo ao IFS o new_line como "\n" não vai!!! > Era isso que eu estava tentando por isso falei que não conseguia mudar o > IFs pra fazer funcionar... não sei o que há de errado mas vou usar esse até > saber por que > o "\n" não é reconhecido como quebra de linha! > > Muito o brigado a todos que ajudaram > > Denis Silva Costa > Analista de Geoprocessamento > > "A paz não brota em um jardim com câmera e sensores..." > > --- Em seg, 5/10/09, Tiago Peczenyj <tiago.peczenyj@ > gmail.com<tiago.peczenyj% 40gmail.com> > > escreveu: > > De: Tiago Peczenyj <tiago.peczenyj@ gmail.com <tiago.peczenyj% 40gmail.com> > > Assunto: Re: [shell-script] while não lê sem new_line > Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos. com.br> > Data: Segunda-feira, 5 de Outubro de 2009, 20:28 > > > > > Existem N maneiras para resolver o problema - o gostoso mesmo é > > discutirmos as alternativas. > > por exemplo, alterar o IFS pode ser simples nesse caso, mas como vc > > esta alterando uma variavel de ambiente vc precisa tomar cuidado para > > ver o que esta acontecendo, ou se acontece algum efeito colateral. sem > > falar em voltar o valor de IFS para o original caso vc não esteja > > fazendo isso num subshell (ou exportar para que funcione, etc). > > Quem puder dar uma olhada no capitulo 2 do Mastering Unix Shell Script > > pode ver 12 formas de ler de um arquivo e processa-lo linha a linha, > > com seus prós e contras. alguem pode achar inutil saber tantas formas > > mas entre uma e outra vc discobre, por exemplo, a diferença entre > > `comando` e $(comando). > > Vejam a diferença quando executamos de forma aninhada: > > pecze...@123: ~$ echo `echo `echo $PATH`` > > echo /home/peczenyj/ bin:/usr/ local/sbin: /usr/local/ bin:/usr/ sbin:/usr/ > bin:/sbin: /bin:/usr/ games > > pecze...@123: ~$ echo $(echo $(echo $PATH)) > > /home/peczenyj/ bin:/usr/ local/sbin: /usr/local/ bin:/usr/ sbin:/usr/ > bin:/sbin: /bin:/usr/ games > > Para quem não captou, tente isso: > > pecze...@123: ~$ echo `echo `echo-sgadjgsadsagd jashd $PATH`` > > O que o Julio fez foi um truque bem util, que lembra um pouco o padrão > > de integração de sistemas corporativos Pipes And Filters [ > > http://www.eaipatte rns.com/PipesAnd Filters.html ] onde a informação > > > que sai do sistema A (o texto original) é filtrado e o fluxo de > > informação recebe um \n por um no pipe para o sistema B, que não vai > > interpretar a informação do sistema A de forma correta sem que todas > > as linhas tenham um \n no final. as vezes me pego fazendo um (cat > > arquivo; echo) quando não quero adicionar um sed na parada. > > Seria mais significavo se fosse um iconv no meio, corrigindo uma > > questão de character encoding, um tr para converter maiusculas pra > > minusculas, um dd para converter de ebcdic para ascii ou então um > > xmllint --format - para formar um xml de forma que cada tag esteja em > > uma linha - util para vc grep'ar coisas. > > [ ]'s Tiago > > 2009/10/5 Thomaz de Oliveira dos Reis <tho...@gmail. com> > > > > > > > > > > > > Bem, pra alterar o IFS é bem simples... > > > > > > veja aqui: http://pastebin. ca/1595200 > > > > > > 2009/10/5 Julio C. Neves <julio.neves@ gmail.com> > > > > > > > > > > > > > > > Estou vendo esta discussão rolar há muito tempo, mas não acompanhei e > > > > portanto não sei o que já foi tentado. > > > > > > > > Então não vou dar uma solução, mas uma "saída" para a solução. > > > > > > > > Prompt> cat arq | cat -vet > > > > 1$ > > > > 2$ > > > > 3Prompt> sed '$s/$/\n/' arq | cat -vet > > > > 1$ > > > > 2$ > > > > 3$ > > > > Prompt> > > > > > > > > Ou seja coloquei um <ENTER> no fim da última linha antes de processar o > > > > arquivo. > > > > > > > > Abraços, > > > > Julio > > > > Cursos de Shell e Zenity em 2 fins de semana? > > > > - Em SP ligue (11) 2125-4747; > > > > - Em DF ligue (61) 3223-3000; > > > > - No RJ ligue (21) 2561-0867; > > > > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > -- > > Tiago B. Peczenyj > > Linux User #405772 > > http://pacman. blog.br > > > > > > > > > > > > ____________ _________ _________ _________ _________ _________ _ > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbusca dos.yahoo. com > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
