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

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

Re: [shell-script] dúvida sed, inserção em /etc/passwd


From: Ulysses Almeida
Subject: Re: [shell-script] dúvida sed, inserção em /etc/passwd
Date: Sat, 29 Jun 2002 10:47:22 -0300
User-agent: Mutt/1.3.17i

Ola,

  vou tentar explicar, o estou (tetando)? fazer!

cat aliases |sed -e '/^#Aliases das 
matriculas/h;x;/\(^$\|\n\n\)/bnext;x;H;s/^$/novo:nome\n/;bfim;:next;x;/^$/h;:fim'

/^#Aliases das matriculas/h  =>  Qndo acha o padrao, o "h" copia a linha para
                                 o buffer temporario do sed.

x => troca a linha, pelo buffer temporario.

/\(^$\|\n\n\)/bnext  => se acha o padrao, vai para "next", como eu
                        troquei o buffer pela linha, o que estou
                        fazendo aki eh verificando se eu tenho o buffer
                        vazio ou duas quebras de linha no buffer.

x => troco novamente a linha pelo buffer, na verdade, volto como
     estava antes!!

H => Adiciono a linha atual, ao buffer do sed. Eu soh passarei por
     aki, qndo jah tiver algo no buffer (Já achei o comentario que
     estou procurando).

s/^$/novo:nome\n/  => Troco a linha em branco, pela nova entrada. Aqui
                      tambem passarei somente qndo tiver algo no
                      buffer (por causa do bnext la atraz). E eu soh
                      troco a linha, depois de adicionala ao buffer,
                      portanto qndo haver essa troca, eu já terei duas
                      quebras de linha no buffer (\n\n).

bfim => Caso eu tenha feito a troca, nao preciso fazer mais nada, e
        vou para o "fim".

:next => Esse eh o label next, eh aqui que eu venho para com o bnext.

x  => troco novamente o buffer pela linha (volto ao normal), pois se
      estamos aki, nao passamos pelo segundo "x"! =/

/^$/h => Isso, creio que diminua o processamento, pois estou "limpando
         o buffer (jogo uma linha em branco no buffer), o que diminui
         a busca pelo "\n\n"  =/

:fim => Esse eh o label fim, eh aqui que somos mandado qndo temos
        bfim.

  Bom, essa foi minha tentativa de explicacao, espero que nao tenha te
confundido mais.

  Provavelmente tem uma forma mais simples e elegante de se fazer
(aurelio?), mas essa ae funcionou nos meus testes!

  []s

  PS: Creio que podemos continuar essa discussao especifica na lista
sed-br, pois tah comecando a perder as caracteristicas de
shell-script! Estou errado?

On Fri, Jun 28, 2002 at 11:36:48PM -0300, Mauricio Vieira wrote:
>   Sobre a outra  solução + complicada, vou dar uma lida pra entender o q 
> significa o /b x e H
> 
>   Valeu.
> Em Fri, 28 Jun 2002, Ulysses Almeida escreveu:
> 

-- 
    .~.  Ulysses Almeida
   / V \  address@hidden
 / (   ) \  Seja livre, use GNU/Linux! 
   ^^-^^


reply via email to

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