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: Denis S. Costa
Subject: Re: [shell-script] while não lê sem new_line
Date: Tue, 6 Oct 2009 09:03:59 -0700 (PDT)

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

De: Julio C. Neves <address@hidden>
Assunto: Re: [shell-script] while não lê sem new_line
Para: address@hidden
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:

>

> peczenyj@123: ~$ echo `echo `echo $PATH``

>

> echo /home/peczenyj/ bin:/usr/ local/sbin: /usr/local/ bin:/usr/ sbin:/usr/

> bin:/sbin: /bin:/usr/ games

>

> peczenyj@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:

>

> peczenyj@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 <thor27@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]



reply via email to

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