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

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

Re: [shell-script] Re: Remover quebra de linha


From: jimmy
Subject: Re: [shell-script] Re: Remover quebra de linha
Date: Mon, 15 Jun 2009 18:18:58 -0300
User-agent: Mutt/1.4.2.3i

On Mon, Jun 15, 2009 at 08:53:47PM -0000, Cristiano Ferrari wrote:
> --- Em address@hidden, César Vianna <cesar.vianna@...> escreveu
> >
> > Opa! Valeu, Cristiano. Funcionou perfeitamente.
> > 
> > Só não entendi a expressão que remove as quebras. O que é a expressão
> > :a;$!N;  ? e o ta ?
> > 
> > sed ':a;$!N;s/\n/ /g;ta; s/ID§/\nID§/g'
> 
> O comando ':' define uma marcação (no caso, marcação chamada 'a'). O comando 
> 't' é um pulo condicional, que pula até uma marcação se o último s/// 
> funcionou. Poranto, 'ta' pula até a marcação 'a' definida no primeiro 
> comando, se o 's/\n/ /g' funcionou.
> 
> Agora não me pergunte o porque do '$!N', eu também não entendo.
> 
> Retirei esta dica do site do Aurélio 
> (http://www.aurelio.net/sed/sed-HOWTO/sed-HOWTO-7.html) faz um bom tempo e 
> nunca compreendi totalmente sua lógica. Alguém da lista pode explicar?
> ------------------------------------

podemos tentar,
$!N = na última linha não apensar com a próxima;

quanto ao código:
  sed ':a;$!N;s/\n/ /g;ta; s/ID§/\nID§/g'
pelo menos nos meus testes é bem mais lento que fazer:
  tr '\n' ' ' < arquivo | sed 's/ID§/\nID§/g'

uma alternativa seria usar:
  sed '1{h;d};/^ID§/{x;s/\n/ /g;p;g;d};H;d' arquivo

a complexidade aumenta bastante, mas nesse caso a performace é 
equivalente ao exemplo com o tr.


-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

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