[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] Imprimir a linha antes de uma string
From: |
Aurelio Marinho Jargas |
Subject: |
Re: RES: [shell-script] Imprimir a linha antes de uma string |
Date: |
Tue, 8 Jun 2004 15:31:40 -0300 (ART) |
oi rodrigo,
--- Rodrigo Linux <address@hidden> escreveu:
> Grande guro do shell-sed-e-muitos-outros :)
:)
**********************************************************
ah! aproveitando o email, na assinatura tem o link pras fotos
e o relato da viagem ao V FISL, agora essse final de semana.
**********************************************************
> Não entendi este comando.
> /string/{ x ; p ;} ; h
...
> x troca os conteúdos dos ESPAÇO PADRÃO e RESERVA
> p imprime o [PADRÃO]
> h guarda o [PADRÃO] no ESPAÇO RESERVA (sobrescrevendo)
> Como ele vai pegar a linha anterior?
esse comando é chatinho mesmo de entender.
esquema de tudo, só focalize no ultimo 'h'.
ele faz com que _cada_ linha seja copiada para o RESERVA,
sempre sobrescrevendo. até aqui tudo bem.
mas antes disso, _se_ for a linha com a string, _antes_
e ele troca os conteúdos ods buffers e mostra na tela.
e o que tinha no reserva antes dessa troca? a linha
anterior.
feito isso, o 'h' é então executado pra guardar a linha
atual e começa tudo de novo.
sacou?
a saída do sedsed ajuda a entender:
$ echo -e "um\ndois\ntres" | sedsed -d '/tres/{x;p;};h'
PATT:um$
HOLD:$
COMM:/tres/ {
COMM:h
PATT:um$
HOLD:um$
um
PATT:dois$
HOLD:um$
COMM:/tres/ {
COMM:h
PATT:dois$
HOLD:dois$
dois
PATT:tres$
HOLD:dois$
COMM:/tres/ {
COMM:x
PATT:dois$
HOLD:tres$
COMM:p
dois
PATT:dois$
HOLD:tres$
COMM:}
COMM:h
PATT:dois$
HOLD:dois$
dois
falou
=====
--
Aurelio Marinho Jargas, Curitiba, Conectiva
A odisseia verde no FISL http://aurelio.net/curso/fisl
______________________________________________________________________
Participe da pesquisa global sobre o Yahoo! Mail:
http://br.surveys.yahoo.com/global_mail_survey_br