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

[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


reply via email to

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