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 03:30:54 -0700 (PDT)

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

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