É verdade waldirio, o indice estava errado!!! eu me preocupei com grandes cois e esqueci dos pequenos detelhes...
mas faça esse mesmo teste com duas palavras em uma linha.... o for pega "por padrão" uma palavra por loop... mas eu não consegui mudar o IFS (se for isso o método de separação que o for usa) pra pegar frases por linha e palavras... Muito obrigado Denis Silva Costa Analista de Geoprocessamento "A paz não brota em um jardim com câmera e sensores..." --- Em sáb, 3/10/09, Waldirio Manhães Pinheiro <[email protected]> escreveu: De: Waldirio Manhães Pinheiro <[email protected]> Assunto: Re: [shell-script] while não lê sem new_line Para: [email protected] Data: Sábado, 3 de Outubro de 2009, 21:55 Ola Denis Como vi algumas respostas contraditorias, segue: waldi...@cerberos: ~/cod> cat -vet texto.txt linha1$ linha2$ linha3waldirio@ cerberos: ~/cod> for b in $(cat texto.txt) ; do echo - $b; done - linha1 - linha2 - linha3 waldi...@cerberos: ~/cod> Com o For funciona perfeitamente waldi...@cerberos: ~/cod> cat -vet texto.txt linha1$ linha2$ linha3waldirio@ cerberos: ~/cod> while read line > do > echo - $line > done < texto.txt - linha1 - linha2 waldi...@cerberos: ~/cod> Com o while realmente ele nao executa a linha que não tenha o \n ou o fim de linha. Ps. No for, em um de seus exemplos, o echo deveria ser no indice (no meu caso $b) e não no arquivo ... []'s Waldirio 2009/10/3 Denis S. Costa <deniscostadsc@ yahoo.com. br> > > > Me enganei o for tambem não funcionou... ele escreve uma string com quebra > de linhas e não linhas separadas. Assim: > > exemplo tosco: > cat $texto > oi1 > oi2 > oi17 > > for i in texto; do > echo "$texto" > echo "Thundercats" > done > > oi1 > > oi2 > > oi17 > Thundercats > > Quando eu queria isso > oi1 > Thundercats > > oi2 > Thundercats > > oi17 > > Thundercats > > Muito obrigado pela tentativa... > > Denis Silva Costa > Analista de Geoprocessamento > > http://shellscript4 all.blogspot. com > > "A paz não brota em um jardim com câmera e sensores..." > > --- Em sex, 2/10/09, Denis S. Costa <deniscostadsc@ yahoo.com. > br<deniscostadsc% 40yahoo.com. br>> > escreveu: > > De: Denis S. Costa <deniscostadsc@ yahoo.com. br<deniscostadsc% 40yahoo.com. > br> > > > Assunto: Re: [shell-script] while não lê sem new_line > Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos. com.br> > Data: Sexta-feira, 2 de Outubro de 2009, 21:04 > > > > Bom desculpe a demora em responder... > > A solução com o for funciona perfeitamente! ! > > a com while não! porque ele faz um loop a mais e gera uma linha em branco e > como preciso processar as linha dá erro!! > > mas muito orbigado pela dica!!! > > Um grande abraço!!! > > Denis Silva Costa > > Analista de Geoprocessamento > > http://shellscript4 all.blogspot. com > > "A paz não brota em um jardim com câmera e sensores..." > > --- Em seg, 21/9/09, Flavio Torres <fla_torres@ yahoo. com.br> escreveu: > > De: Flavio Torres <fla_torres@ yahoo. com.br> > > Assunto: Re: [shell-script] while não lê sem new_line > > Para: shell-script@ yahoogrupos. com.br > > Data: Segunda-feira, 21 de Setembro de 2009, 22:16 > > > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > Denis S. Costa wrote: > > > desculpem a mensagem anterior sem assunto > > > > > > tenho um programa em shell com uma sintaxe parecida com essa: > > > > > > > > > > > > while read linha; do > > > > > > echo "$linha" > > > > > > echo "" > > > > > > done < texto.txt > > > > > > > > > > > > Bom, acontece que o texto que uso as vezes não tem quebra de linha na > > ultima linha: > > > > > > > > > > > > oi, tudo bem? \n > > > > > > tudo e com você? \n > > > > > > bem... > > > > > > > > > > > > (as duas primeiras linha tem uma quebra de linha e a ultima não!) > > > > > > > > > > > > essa linha sem quebra de linha não entra no loop! não lida pelo > > while!!! por que? > > > > > > > > Da uma lida na estrutura de loop aqui: > > http://asis. epfl.ch/GNU. SYS/bash- 1.14.7/features_ 1.html > > Posto aqui duas formas para resolver, deve ter algumas mais que o > > pessoal certamente irá postar. > > Usando a estrutura do for, o IFS diz que o delimitador (split) é nada, > > pode setar qualquer outra coisa diferente de espaço (faça o teste > > removendo o IFS que você notará a diferença). Se você tivesse um > > arquivo demilitado por ^, então poderia usar o IFS=^, isto faria o seu > > read valer os campos passados, ex: read nome sobrenome, sendo que o > > arquivo estaria assim: nome^sobrenome. > > - -- > > IFS="" > > for i in $(cat texto.txt);do > > echo $i > > done > > - -- > > usando o ultil > > - -- > > FLAG=false > > until $FLAG;do > > read || FLAG=true > > echo $REPLY > > done < texto.txt > > - -- > > Como pode ter visto na estrutura de loop, o ultil trabalhará assim: > > enquanto for falso, faça > > leia || (ou) se nao ler nada (read non zero) então recebe true para > > finalizar o loop > > imprime REPLY (variável default quando nao se define nada no while) > > end > > Um abraço > > - -- > > /*---------- --------- --------- --------- --------- -----*/ > > /* * Flavio Torres - Administrador de Sistemas*/ > > /* /_\ */int y,z;main(x){ x=(x>0?-9: x);z=((z= (x+5) > > /* o. .o */)>0?z:-z); printf(!x& &++y?"\n" :z?z>y%3+ y/ > > /* ((Y)) */3?" ":x<-5?"/":" \\":y?"|" :"*");y-9? main( > > /* ()) (() */++x):puts( " _|_|_")&&puts( " \\___/");} > > /* ()^() A party animal isn't just for Christmas.*/ > > - ------------ --------- --------- ------ > > - ------------ --------- --------- --------- --------- --------- - > > 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: shell-script- unsubscribe@ yahoogrupos. com.br > > - ------------ --------- --------- --------- --------- --------- - > > 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.programmi ng.shell. brazil > > Links do Yahoo! Grupos > > -----BEGIN PGP SIGNATURE--- -- > > Version: GnuPG v1.4.8 (MingW32) > > iEYEARECAAYFAkq4JWc ACgkQNRQApncg297 RBwCdGiV+ UQ+dmhfPzjWSg2Tb Z5Ya > > 6UQAn0yRXy50Efx9tWI TSTnMUxvZAeBv > > =3i2v > > -----END PGP SIGNATURE--- -- > > > > > > > > > > > > > > > > ____________ _________ _________ _________ _________ _________ _ > > 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] > > > > > > > > > > > > ____________ _________ _________ _________ _________ _________ _ > 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] > > > -- ____________ __ Atenciosamente Waldirio msn: waldi...@gmail. com Site: www.waldirio. com.br Blog: blog.waldirio. com.br PGP: www.waldirio. com.br/public. html [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]
