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: Tue, 6 Oct 2009 09:15:37 -0300

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

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