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: Thomaz de Oliveira dos Reis
Subject: Re: [shell-script] while não lê sem new_line
Date: Mon, 5 Oct 2009 15:23:37 -0300

Bem, pra alterar o IFS é bem simples...

veja aqui: http://pastebin.ca/1595200

2009/10/5 Julio C. Neves <address@hidden>

>
>
> 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<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 
> > <address@hidden<waldirio%40gmail.com>
> <waldirio%40gmail.com>>
> > escreveu:
> >
> > De: Waldirio Manhães Pinheiro <address@hidden 
> > <waldirio%40gmail.com><waldirio%
> 40gmail.com>>
> > Assunto: Re: [shell-script] while não lê sem new_line
> > Para: address@hidden<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:
> >
> > 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]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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