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: Mauricio Vieira
Subject: Re: [shell-script] dúvida sed, inserção em /etc/passwd
Date: Mon, 1 Jul 2002 23:50:50 -0300
User-agent: Mutt/1.2.5i

Saudacoes,

 Solucionei assim:

# Inserção da matrícula no aliases
ALIASES=/etc/aliases
NEWALIASES=/usr/bin/newaliases
SCRIPT_SED=.apenda.sed

# Verifica se há a matricula no aliases
  if ! grep "$MATRICULA" $ALIASES &>/dev/null
    then
        # Criação dinâmica do script sed
        echo "/^#MATRICULA/a\\
        ${MATRICULA}:${LOGIN}" > $SCRIPT_SED

       # Inclusão do alias matrícula apontando pro login
        cp $ALIASES ${ALIASES}.O
        cat $ALIASES.O | sed -f $SCRIPT_SED > $ALIASES
        $NEWALIASES
        rm $SCRIPT_SED
  fi

 
Usei sed -f pq shebang bin sed não funcionou por algum motivo sedicioso 
desconhecido. 

Em Sat, 29 Jun 2002, Ulysses Almeida escreveu:

> 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! 
>    ^^-^^
> 
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>  
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
> http://br.yahoo.com/info/utos.html 
> 

-- 
Mauricio B. C. Vieira - <address@hidden>
Estudante de Ciência da Computação - UFBA
GAVRI - Grupo dos Administradores Voluntários da Rede de Informática
                http://gavri.im.ufba.br
Instituto de Matemática 
                http://www.im.ufba.br


reply via email to

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