[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!
^^-^^