Bem, pra alterar o IFS é bem simples... veja aqui: http://pastebin.ca/1595200
2009/10/5 Julio C. Neves <[email protected]> > > > 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. > > 2009/10/5 Denis S. Costa > <[email protected]<deniscostadsc%40yahoo.com.br> > > > > > > > > > > É 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]<waldirio%40gmail.com> > <waldirio%40gmail.com>> > > escreveu: > > > > De: Waldirio Manhães Pinheiro <[email protected] > > <waldirio%40gmail.com><waldirio% > 40gmail.com>> > > Assunto: Re: [shell-script] while não lê sem new_line > > Para: > > [email protected]<shell-script%40yahoogrupos.com.br><shell-script% > 40yahoogrupos.com.br> > > > 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] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]
