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

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

Re: [shell-script] Re: Alteração de campos individualmente.


From: jimmy
Subject: Re: [shell-script] Re: Alteração de campos individualmente.
Date: Tue, 19 Jan 2010 08:40:03 -0200
User-agent: Mutt/1.4.2.3i

On Mon, Jan 18, 2010 at 07:32:06PM -0000, mikoazul wrote:
> 
> 
>    Oi Waldirio,
> 
>    A idéia é aquela mesma que eu postei originalmente.
> 
>    Não quero substituir todos os # por *. A idéia é a partir de uma linha de
>    entrada eu gere n linhas de saída.
> 
>    Tudo baseado no texto entre "#" (#texto_que_eu_quero_substituir#).
> 
>    Para cada texto encontrado eu quero tratá-lo e ignorar o restante e ir
>    fazendo na sequencia cada um. Ou seja ir encontrando cada texto entre "#".
> 
>    Se uma linha tiver n textos entre "#" então o resultado será "n" linhas
>    tratadas. Entendeu? Sendo que o texto de entrada só poderá ter no máximo 9
>    textos entre "#" (justamente a quantidade de retrovisores que o sed pode
>    utilizar).

seu problema estava muito nebuloso até agora para mim,
você pode assumir uma solução com awk, por exemplo:

  $ awk -F'#' '{OFS="";line=$0; for(i=2;i<NF;i+=2){ $i=" * "; print $0; 
$0=line};}' arquivo

que nada mais é do que uma lógica simples usando looping.

> 
>    Talvez seja um assunto pra ser tratado na sed-br.
pode ser, mas em sed creio que fique algumas vezes mais complexo:

#!/usr/bin/sed
:loop;        # defino um LABEL de nome "loop"
/#[^#]*#/ {   # "enquanto" tiver campo faça ...
   h;         # copia o pattern space no hold space
   s//*/;     # susbtitua o campo por 
   s/#//g;    # remova todos os "#" do patter space
   p;         # imprima o patter space
   g;         # o inverso do "h"
   s/#//;     # "descaracterize" -
   s/#//;     #     o primeiro campo
   b loop;    # retorne para "loop"
}
d;            # deleta o pattern space

> 
>    []s

as 2 soluções são independentes da quantidade de "campos" que sua linha
irá tem.

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


reply via email to

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