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

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

Re: [shell-script] while não lê sem new_line


From: Julio C. Neves
Subject: Re: [shell-script] while não lê sem new_line
Date: Mon, 5 Oct 2009 12:42:28 -0300

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 <address@hidden>

>
>
> É 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 
> <address@hidden<waldirio%40gmail.com>>
> escreveu:
>
> De: Waldirio Manhães Pinheiro <address@hidden <waldirio%40gmail.com>>
> Assunto: Re: [shell-script] while não lê sem new_line
> Para: address@hidden <shell-script%40yahoogrupos.com.br>
> Data: Sábado, 3 de Outubro de 2009, 21:55
>
>
>
> Ola Denis
>
> Como vi algumas respostas contraditorias, segue:
>
> waldirio@cerberos: ~/cod> cat -vet texto.txt
>
> linha1$
>
> linha2$
>
> linha3waldirio@ cerberos: ~/cod> for b in $(cat texto.txt) ; do echo - $b;
>
> done
>
> - linha1
>
> - linha2
>
> - linha3
>
> waldirio@cerberos: ~/cod>
>
> Com o For funciona perfeitamente
>
> waldirio@cerberos: ~/cod> cat -vet texto.txt
>
> linha1$
>
> linha2$
>
> linha3waldirio@ cerberos: ~/cod> while read line
>
> > do
>
> > echo - $line
>
> > done < texto.txt
>
> - linha1
>
> - linha2
>
> waldirio@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: waldirio@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]



reply via email to

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