[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: Delimitadores de trecho de texto
From: |
jimmy |
Subject: |
Re: [shell-script] Re: Delimitadores de trecho de texto |
Date: |
Wed, 29 Oct 2008 18:41:33 -0200 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Oct 29, 2008 at 08:03:32PM -0000, Cristiano Ferrari wrote:
> --- Em address@hidden, jimmy <ronaldo_tgz@...> escreveu
> > #!/usr/bin/sed -f
> >
> > /^ *Ficha:/{
> > :a;
> > N;
> > s/\n/; /;
> > /; -----/{
> > bb;
> > }
> > s/ \+/ /g;
> > ba;
> > }
> > :b;
> > s/\n//g;
> > s/^ \+//;
> >
>
> Vixi jimmy, não consegui entender o comando.
>
> Você poderia postar ele no http://pastebin.com para evitar que o yahoo
> quebre linhas e remova espaços em lugares indevidos?
>
> ------------------------------------
vou descrever o que cada linha faz:
# busca por linhas que casem com o padrão: qualquer quantidade de
# espaços no começo + a string "Ficha:" e execute os comandos dentro
# dos colchetes
/^ *Ficha:/{ #
# marca o trecho do código com um label de nome "a"
:a;
# junta a linha atual com a próxima (só assim é possível remover as
# quebras de linhas)
N;
# remove troca a quebra de linha por um "; " (poderia ser qualquer outra string)
s/\n/; /;
# caso encontre o padrão "; -----" que é a linha substituída com o
# separador de fichas execute o que estiver dentro do colchetes
/; -----/{
# faça um salto para o laber de nome "b"
bb;
}
# remova o excesso de espaços
s/ \+/ /g;
# pule para o label de nome "a" ( um looping para juntar todas as
# linhas, se não for feito o sed apenas junta a linha que tem "Ficha:"
# com a próxima)
ba;
}
# marca este trecho do código com um label de nome "b"
:b;
# essa linha nem era necessária nesse caso ...
s/\n//g;
# remove os espaços no começo das linhas
s/^ \+//;
a intenção era que o sed juntasse em uma linha cada bloco de linhas que
estivessem dentro das definições de que é uma "ficha", foi usado a
implementação de "goto" do sed.
manda um exemplo do que espera obter como saída que fica mais fácil
acertar o script.