Ir direto para busca.
sed-br · Lista sobre SED e Expressões Regulares

Informações sobre o grupo

? Você já é um associado? Entre no Yahoo!

Dicas

Você sabia...
Você pode ordenar suas mensagens por data? Basta clicar no link da coluna data. Suas preferências serão lembradas para que você não precise fazer isso novamente sempre que retornar.

Mensagens

  Ajuda
Avançado
mensagens 185 - 214 de 5042   Mais antigos  |  < Mais antigos  |  Mais recentes >  |  Mais recentes
mensagens 185 - 214 de 5042   Mais antigos  |  < Mais antigos  |  Mais recentes >  |  Mais recentes
mensagens: Exibir resumo de mensagens Classificar por data ^  
#185 De: Roberto Jung Drebes <drebes@...>
Data: Seg, 8 de Mai de 2000 1:51 pm
Assunto: Removendo Square Brackets.
drebes@...
Enviar e-mail Enviar e-mail
 
Olá,

Pergunta tola:

Como eu removo colchetes? ([])

Tentei

sed -e 's/[\[\]]//g' e não funcionou.

Tentei colocar a expressão em um arquivo, e chamar o sed com a opção -f,
mas também não funcionou.

Alguma dica?

--
Roberto Jung Drebes <drebes@...>
Porto Alegre, RS - Brasil
http://www.inf.ufrgs.br/~drebes/

#186 De: Gustavo Niemeyer <gustavo@...>
Data: Seg, 8 de Mai de 2000 2:07 pm
Assunto: Re: Removendo Square Brackets.
gustavo@...
Enviar e-mail Enviar e-mail
 
Olá Roberto!

> Como eu removo colchetes? ([])
>
> Tentei
>
> sed -e 's/[\[\]]//g' e não funcionou.

Utilize

sed -e 's/[][]//g'

Quando o ']' vem imediatamente após o '[', ele
não é tratado como fechamento.

Abraços!!

--
Gustavo Niemeyer

#187 De: # aurelio marinho jargas <aurelio@...>
Data: Seg, 8 de Mai de 2000 8:12 pm
Assunto: Re: Removendo Square Brackets.
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 8/5, Gustavo Niemeyer:

>
> Olá Roberto!
>
> > Como eu removo colchetes? ([])
> >
> > Tentei
> >
> > sed -e 's/[\[\]]//g' e não funcionou.
>
> Utilize
>
> sed -e 's/[][]//g'
>
> Quando o ']' vem imediatamente após o '[', ele
> não é tratado como fechamento.

e se vc quiser remover os colchete E o que tem dentro, é mais
lindo ainda:

sed 's/\[[^]]*]//'

&:)


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#188 De: levy@...
Data: Qua, 10 de Mai de 2000 10:34 pm
Assunto: expressao para valor
levy@...
Enviar e-mail Enviar e-mail
 
Ola',

Estou tentando fazer uma expressao para verificar se uma variavel
esta' formatada corretamente de acordo com o padrao de moeda
brasileiro: R$ 1.000,00 (por exemplo)

          0 - recusa
         00 - recusa
        ,00 - recusa
       9,00 - ok
      99,00 - ok
     999,00 - ok
    .999,00 - ok
   9.000,00 - ok
  99.000,00 - ok
999.000,00 - ok

A expressao e' esta:

   $re = /^\d{0,3}.?\d{1,3}\,\d{2,2}$/;

So' nao esta' funcionando no caso do ".999,00" que deveria dar
recusar. Alguem saberia como fazer para que a expressao so' aceite o
ponto se tiver 1, 2 ou 3 digitos antes dele?

Muito obrigado,
Levy Carneiro Jr.

#189 De: # aurelio marinho jargas <aurelio@...>
Data: Qua, 10 de Mai de 2000 11:19 pm
Assunto: Re: expressao para valor numérico (moeda)
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 10/5, levy@...:

>
> Ola',
>
> Estou tentando fazer uma expressao para verificar se uma variavel
> esta' formatada corretamente de acordo com o padrao de moeda
> brasileiro: R$ 1.000,00 (por exemplo)
>
>          0 - recusa
>         00 - recusa
>        ,00 - recusa
>       9,00 - ok
>      99,00 - ok
>     999,00 - ok
>    .999,00 - ok
>   9.000,00 - ok
>  99.000,00 - ok
> 999.000,00 - ok
>
> A expressao e' esta:
>
>   $re = /^\d{0,3}.?\d{1,3}\,\d{2,2}$/;
     $re = /(^\d{1,3}\.)?\d{1,3}\,\d{2}$/;

os parênteses são para agrupar.
veja se na linguagem que vc está usando, vc precisa escapá-los ou
não para terem significado especial (agrupamento)


{2,2} = vá de 2 até 2, então apenas o {2} já funciona, ou menor
ainda: \d\d  &:)

o ponto deve ser escapado senão

9a000,00

também passa.
. = qualquer caractere
\. = ponto literal


e por último, tornando o número E o ponto pocionais, vc permite
de 1 a 3 ocorrências do número.

e ainda se quiser fazer bilhões, trilhões, etc, troque o ? por *

mas assim ainda passaria

99.9.000,00
ou
99.0,00

então poderia ficar

     $re = /((^\d{1,3}\.)+(\d{3}\.)+|\d{1,3})\,\d\d$/;

assim permite corretamente milhões, bilhões, trilhões, etc...

obs.: não testei essas ERs, mas deve funcionar &:)



> So' nao esta' funcionando no caso do ".999,00" que deveria dar
> recusar. Alguem saberia como fazer para que a expressao so' aceite o
> ponto se tiver 1, 2 ou 3 digitos antes dele?



--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#190 De: Mauricio Teixeira <msteixeira@...>
Data: Sex, 19 de Mai de 2000 4:42 pm
Assunto: inserindo 1 caracter no final da linha
msteixeira@...
Enviar e-mail Enviar e-mail
 
Oi Pessoal,

Pois é, sou iniciante no uso do sed, se puderem me ajudar, vou soltar
fogos de artifício.
O fato é que tenho um arquivo + - assim:

textoqualquer "cn=     fulano de tal
textoqualquer "cn=     beltrano
textoqualquer "cn=     outra pessoa

E quero colocar aspas no final de cada linha:

textoqualquer "cn=     fulano de tal"
textoqualquer "cn=     beltrano"
textoqualquer "cn=     outra pessoa"

Como faço?

Abraço
Mauricio

#191 De: # aurelio marinho jargas <aurelio@...>
Data: Sex, 19 de Mai de 2000 8:03 pm
Assunto: Re: inserindo 1 caracter no final da linha
aurelio@...
Enviar e-mail Enviar e-mail
 
olá mauricio,

@ 19/5, Mauricio Teixeira:
> Pois é, sou iniciante no uso do sed, se puderem me ajudar, vou soltar
> fogos de artifício.

opa! vai acendendo o fósforo aí então &:)

> O fato é que tenho um arquivo + - assim:
>
> textoqualquer "cn=     fulano de tal
> textoqualquer "cn=     beltrano
> textoqualquer "cn=     outra pessoa
>
> E quero colocar aspas no final de cada linha:
>
> textoqualquer "cn=     fulano de tal"
> textoqualquer "cn=     beltrano"
> textoqualquer "cn=     outra pessoa"
>
> Como faço?

se TODAS as linha têm essas entradas, simplesmente faça um

sed 's/$/"/'       # troque $ (fim de linha) por "


se for mais específico, tem que trabalhar mais.

sed '/ "cn=/s/$/"/'   # apenas nas linhas que tenham a cadeia
                         "cn=, coloque as aspas no final


beleza?

--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#192 De: Mauricio Teixeira <msteixeira@...>
Data: Sex, 19 de Mai de 2000 5:25 pm
Assunto: Re: inserindo 1 caracter no final da linha
msteixeira@...
Enviar e-mail Enviar e-mail
 
Scatapum!!!
Pou!! Pá!!!

(são os fogos)

Valeu cara....

Mauricio


# aurelio marinho jargas wrote:

> olá mauricio,
>
> @ 19/5, Mauricio Teixeira:
> > Pois é, sou iniciante no uso do sed, se puderem me ajudar, vou soltar
> > fogos de artifício.
>
> opa! vai acendendo o fósforo aí então &:)
>
> > O fato é que tenho um arquivo + - assim:
> >
> > textoqualquer "cn=     fulano de tal
> > textoqualquer "cn=     beltrano
> > textoqualquer "cn=     outra pessoa
> >
> > E quero colocar aspas no final de cada linha:
> >
> > textoqualquer "cn=     fulano de tal"
> > textoqualquer "cn=     beltrano"
> > textoqualquer "cn=     outra pessoa"
> >
> > Como faço?
>
> se TODAS as linha têm essas entradas, simplesmente faça um
>
> sed 's/$/"/'       # troque $ (fim de linha) por "
>
> se for mais específico, tem que trabalhar mais.
>
> sed '/ "cn=/s/$/"/'   # apenas nas linhas que tenham a cadeia
>                         "cn=, coloque as aspas no final
>
> beleza?
>
> --
> s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
> ${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq
>
> ------------------------------------------------------------------------
> Best friends, most artistic, class clown Find 'em here:
> http://click.egroups.com/1/4054/0/_/161736/_/958766617/
> ------------------------------------------------------------------------

#193 De: "Ademar de Souza Reis Jr." <ademarjr@...>
Data: Ter, 23 de Mai de 2000 3:41 am
Assunto: expressão irregular... (fwd)
ademarjr@...
Enviar e-mail Enviar e-mail
 
Olá a todos.

Recebí uma dúvida de um amigo programador sobre uma expressão regular... Não
sei exatamente do que se trata o problema, mas como prometí a ele, estou
enviando pra lista.

Eu o estou introduzindo ao Linux, mas acredito que ele ainda esteja
programando em Window$ :(

Se alguém puder ajudar, fico muito agradecido (e ele tbm). :)

[]'s
    - Ademar

--
================================================
Ademar de Souza Reis Jr. - ademar@...
http://www.inf.ufpr.br/~asr98
Estudante de Informatica / Bolsista PET - UFPR
Registered Linux User #71790
Curitiba - PR - Brasil

Emacs is a nice OS - but it lacks a good text editor.
That's why I am using Vim.
     - Anonymous




PS. Tomei a liberdade de fazer uma pequena alteração na msg dele. Como
torcedor do São Paulo Futebol Clube, troquei todas as ocorrências de
"Coxa" (Coritiba Futebol Clube pra quem não conhece) por SPFC pra que as
frases fizessem sentido... :P



---------- Forwarded message ----------
From: Linoel <linoel@...>
To: 'Ademar de Souza Reis Jr.' <ademar@...>
Date: Mon, 22 May 2000 14:52:46 -0300
Subject: expressão irregular...

Quero uma expressão que me retorne tudo que satisfizer presença de "SPFC"
"Melhor" "time" "mundo"
(Tem que Ter as quatro palavras)
Em qualquer sequência ... dá para fazer?

Satisfazem:

O SPFC é o melhor time do mundo.
Do mundo, o coxa é o melhor time
Times do mundo ... o SPFC é o melhor...

Não satisfazerm:

Ao atlético é o melhor time do mundo.
O SPFC é o melhor time que existe
Dos times do mundo, o SPFC se destaca como uma equipe mais elaborada

Fiz assim: ( na área de condição SQL )

WHERE ((campo  Like "*SPFC*" And  campo  Like "*Time*" And  campo  Like
"*Melhor*") And  campo  Like "*Mundo*"))

Funcionou, mas não é funcional... porque nem sempre tenho 4 palavras, às vezes
tenho 1, 2, 3, 5, 7, n...


Sabe como fazer? É possível?

[]s
Linoel

#194 De: Eliphas Levy Theodoro <eliphas@...>
Data: Ter, 23 de Mai de 2000 4:10 am
Assunto: Re: expressão irregular... (fwd)
eliphas@...
Enviar e-mail Enviar e-mail
 
Ademar de Souza Reis Jr., @ 00:41:

>
> Olá a todos.
>
> Recebí uma dúvida de um amigo programador sobre uma expressão regular... Não
> sei exatamente do que se trata o problema, mas como prometí a ele, estou
> enviando pra lista.
>
> Eu o estou introduzindo ao Linux, mas acredito que ele ainda esteja
> programando em Window$ :(
>
> Se alguém puder ajudar, fico muito agradecido (e ele tbm). :)

-=-

> Quero uma expressão que me retorne tudo que satisfizer presença de
> "SPFC" "Melhor" "time" "mundo"
> (Tem que Ter as quatro palavras)
> Em qualquer sequência ... dá para fazer?

> WHERE ((campo  Like "*SPFC*" And  campo  Like "*Time*" And  campo  Like
"*Melhor*") And  campo  Like "*Mundo*"))
>
> Funcionou, mas não é funcional... porque nem sempre tenho 4 palavras, às vezes
tenho 1, 2, 3, 5, 7, n...

SQL não sei. em bash2 seria algo assim:

->
echo "o são paulo é o melhor time do mundo" > tst
echo "o palmeiras é o melhor time do mundo" >> tst

cat $tst | while read linha; do
   [ ! "$linha" = "${linha/palmeiras//}" -a \
     ! "$linha" = "${linha/time//}" -a \
     ! "$linha" = "${linha/melhor//}" -a \
     ! "$linha" = "${linha/mundo//}" ] &&
   echo $linha
done
<-

o aurélio tá mandando a solução em sed ':)

se eu entendi bem, ele quer fazer em SQL, aí eu não sei.

--
eliphas

#195 De: # aurelio marinho jargas <aurelio@...>
Data: Ter, 23 de Mai de 2000 4:14 am
Assunto: Re: várias palavras em qualquer ordem
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 23/5, Ademar de Souza Reis Jr.:
> Recebí uma dúvida de um amigo programador sobre uma expressão regular... Não
> sei exatamente do que se trata o problema, mas como prometí a ele, estou
> enviando pra lista.
>
> Eu o estou introduzindo ao Linux, mas acredito que ele ainda esteja
> programando em Window$ :(
>
> Se alguém puder ajudar, fico muito agradecido (e ele tbm). :)

olá ademar,

bem, eu acho que ele quer uma query SQL, mas como esta lista é de
sed, aqui vai uma solução (meia porca, mas foi a melhor que
consegui em 5 minutos - tô louco pra ir dormir...)


troquei as palavras desejadas para: um dois tres quatro

echo "mla maa tres jaara quatro um dois alha" | sed -n \
'/./{s/um/&/;ta;n;:a;s/dois/&/;tb;n;:b;s/tres/&/;tc;n;:c;s/quatro/&/p;}'


pega, em qualquer ordem e no meio de qualquer texto, as quatro
palavras desejadas. talvez tenha uma maneira mais bonita de se
fazer isso, mas essa funciona &:)



> From: Linoel <linoel@...>
> To: 'Ademar de Souza Reis Jr.' <ademar@...>
>
> WHERE ((campo Like "*SPFC*" And campo Like "*Time*" And campo
> Like "*Melhor*") And campo Like "*Mundo*"))
> Funcionou, mas não é funcional... porque nem sempre tenho 4
> palavras, às vezes tenho 1, 2, 3, 5, 7, n...

--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#196 De: Mauricio Teixeira <msteixeira@...>
Data: Qua, 24 de Mai de 2000 12:01 pm
Assunto: inserir uma linha
msteixeira@...
Enviar e-mail Enviar e-mail
 
Oi pessoal,

Se alguém puder ajudar, eu agradeço. O fato é que tenho um arquivo
assim:

textoaaaa
textobbb
textoccc
numero: 8979
textoggg
textouiuu
textotttt
numero: 89765

e assim por diante, e eu gostaria de colocar uma linha em branco,
ficando assim:

textoaaaa
textobbb
textoccc
numero: 8979

textoggg
textouiuu
textotttt
numero: 765

Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
poderíamos fazer uma busca por números e inserir uma linha em branco
imediatamente após eles....(é assim?)
Tem como fazer isso? (onde é que eu acho informação sobre expressões
regulares como inserir linha, deletar linha, pois eu não sei quais
caracter representa esses comandos).

Abraço
Mauricio

#197 De: Eliphas Levy Theodoro <eliphas@...>
Data: Qui, 25 de Mai de 2000 1:46 am
Assunto: Re: inserir uma linha
eliphas@...
Enviar e-mail Enviar e-mail
 
Mauricio Teixeira, @ 12:01:

> Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> poderíamos fazer uma busca por números e inserir uma linha em branco
> imediatamente após eles....(é assim?)

pensou regularmente! mas podemos ser mais específicos, procurando por
'uma linha começando com "numero: " e seguida por um ou mais números'.

$ sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}' arquivo

/numero: [0-9]\+/       procure por 'numero: ' seguido de um ou mais números
{                       inicia bloco de comandos para a linha encontrada
N                       junta esta linha com a próxima
s/                      substitua...
\(                      inicia um buffer pra referenciação posterior
\n                      linha nova
\)                      fecha buffer
/                       por...
\1\1                    linha-nova linha-nova (buffer 1)
/                       fim.
}                       fecha bloco de comandos.

> Tem como fazer isso? (onde é que eu acho informação sobre expressões
> regulares como inserir linha, deletar linha, pois eu não sei quais
> caracter representa esses comandos).

'man sed'. tem tudim.

também veja http://www.conectiva.com.br/~aurelio/sed

sed you later,
--
eliphas

#198 De: # aurelio marinho jargas <aurelio@...>
Data: Qui, 25 de Mai de 2000 3:43 am
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
olás,


@ 24/5, Eliphas Levy Theodoro:
> Mauricio Teixeira, @ 12:01:
> > Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> > poderíamos fazer uma busca por números e inserir uma linha em branco
> > imediatamente após eles....(é assim?)
>
> pensou regularmente! mas podemos ser mais específicos, procurando por
> 'uma linha começando com "numero: " e seguida por um ou mais números'.
>
> $ sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}' arquivo
>
> /numero: [0-9]\+/       procure por 'numero: ' seguido de um ou mais números
> {                       inicia bloco de comandos para a linha encontrada
> N                       junta esta linha com a próxima
> s/                      substitua...
> \(                      inicia um buffer pra referenciação posterior
> \n                      linha nova
> \)                      fecha buffer
> /                       por...
> \1\1                    linha-nova linha-nova (buffer 1)
> /                       fim.
> }                       fecha bloco de comandos.


OU

sed 's/^numero: [0-9]\+$/&\
/' arquivo

basta "escapar" a quebra de linha. fica feio, mas funciona.
bem que podia funcionar o maldito \n...

o & referencia o padrão casado na primeira parte do comando s, ou
seja, a própria linha com o número.



> também veja http://www.conectiva.com.br/~aurelio/sed

esse tá meio porco, concha de retalhos mesmo, mas tem algumas
coisinhas interessantes...


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#199 De: # aurelio marinho jargas <aurelio@...>
Data: Qui, 25 de Mai de 2000 3:52 am
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 24/5, Mauricio Teixeira:
> Tem como fazer isso? (onde é que eu acho informação sobre expressões
> regulares como inserir linha, deletar linha, pois eu não sei quais
> caracter representa esses comandos).

ôpa, agora que eu vi o fim da mensagem.
com ERs, não tem especificamente como dizer "apague a linha X".

mas com sed+ERs sim.

como o eliphas já disse, na "man sed" tem tudo, mas admito que a
informação é tão direta e técnica que acaba quase que não
significando algo de palpável.

o comando sed para apagar linhas é o d de Delete
o comando sed para inserir linhas é o i para Inserir uma linha
ANTES da linha atual e o a para Apendar uma linha DEPOIS da ilnha
atual.


então:

sed d         apaga todas as linhas
sed 1,5d      apaga as 5 primeiras linhas
sed /linux/d  apaga todas as linhas que contém a palavra linux

o mesmo para os comandos de inserção.

sed /<html>/a\
<body>

que ao achar uma o início de um arquivo html, já inicia a seção
BODY logo abaixo.



--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#200 De: Eliphas Levy Theodoro <eliphas@...>
Data: Qui, 25 de Mai de 2000 3:55 am
Assunto: Re: inserir uma linha
eliphas@...
Enviar e-mail Enviar e-mail
 
# aurelio marinho jargas, @ 00:43:

> olás,

eai ':)

> @ 24/5, Eliphas Levy Theodoro:
> > Mauricio Teixeira, @ 12:01:
> > > Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> > > poderíamos fazer uma busca por números e inserir uma linha em branco
> > > imediatamente após eles....(é assim?)
> >
> > pensou regularmente! mas podemos ser mais específicos, procurando por
> > 'uma linha começando com "numero: " e seguida por um ou mais números'.
> >
> > $ sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}' arquivo
> >
> > /numero: [0-9]\+/       procure por 'numero: ' seguido de um ou mais números
> > {                       inicia bloco de comandos para a linha encontrada
> > N                       junta esta linha com a próxima
> > s/                      substitua...
> > \(                      inicia um buffer pra referenciação posterior
> > \n                      linha nova
> > \)                      fecha buffer
> > /                       por...
> > \1\1                    linha-nova linha-nova (buffer 1)
> > /                       fim.
> > }                       fecha bloco de comandos.
>
>
> OU
>
> sed 's/^numero: [0-9]\+$/&\
> /' arquivo
>
> basta "escapar" a quebra de linha. fica feio, mas funciona.
> bem que podia funcionar o maldito \n...

só se copiar ele em um buffer, como fiz lá em cima. ':)
mas aí torna-se obrigatório o uso do N, senão não há como referenciar um \n.

> o & referencia o padrão casado na primeira parte do comando s, ou
> seja, a própria linha com o número.

sed -e '/numero: [0-9]\+/a \' -e '' arquivo

procure, anexe (append - 'a \') uma linha contendo nada.

é preciso dos dois '-e' para o sed pensar que está lendo linha a
linha. cada -e é uma linha.

--
eliphas

#201 De: Junior <extacy@...>
Data: Ter, 30 de Mai de 2000 6:39 pm
Assunto: Fala galera !
extacy@...
Enviar e-mail Enviar e-mail
 
Sei que já pedi isso antes e o Aurélio tinha me respondido, porém
graças a um pau na minha máquina perdi tudo :(
'Tem coisas que só a microsoft fa por vc' essa é uma delas hehehe
mas vamos ao que interessa !
eu precisava de um er para data alguém aí me dá uma força :) ??

[]'s


--
/*
If it happens once, it's a bug.
If it happens twice, it's a feature.
If it happens more than twice, it's windows.
*/

#202 De: # aurelio marinho jargas <aurelio@...>
Data: Ter, 30 de Mai de 2000 7:25 pm
Assunto: Re: Fala galera !
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 30/5, Junior:

> Sei que já pedi isso antes e o Aurélio tinha me respondido, porém
> graças a um pau na minha máquina perdi tudo :(
> 'Tem coisas que só a microsoft fa por vc' essa é uma delas hehehe
> mas vamos ao que interessa !
> eu precisava de um er para data alguém aí me dá uma força :) ??

a lista tem histórico meu, se a resposta que eu tinha dado serve,
procura lá no histórico:

http://www.egroups.com/messages/sed-br


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#203 De: # aurelio marinho jargas <aurelio@...>
Data: Sex, 2 de Jun de 2000 2:39 am
Assunto: usando a quebra de linha como separador
aurelio@...
Enviar e-mail Enviar e-mail
 
vi isso num roteiro sed agora e juro que isso nunca tinha passado
na minha cabeça...

o comando de substituição s aceita qualquer caractere como
separador, então:

s/minha palavra palha/Outra PALAVRA mala/
s,minha palavra palha,Outra PALAVRA mala,
s|minha palavra palha|Outra PALAVRA mala|
s#minha palavra palha#Outra PALAVRA mala#

são similares, bem como

s
minha palavra palha
Outra PALAVRA mala


usando a quebra de linha como separador, bem mais visual não?


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#204 De: "Alexandre Biancalana" <ale@...>
Data: Seg, 5 de Jun de 2000 8:38 pm
Assunto: Re: inserir uma linha
ale@...
Enviar e-mail Enviar e-mail
 
Ola Mauricio....

Creio que voce possa usar algo como:

  sed s/([1-90000])/$1\n/g

[ ]''s
Alexandre


----- Original Message -----
From: Mauricio Teixeira <msteixeira@...>
To: <sed-br@egroups.com>
Sent: Wednesday, May 24, 2000 9:01 AM
Subject: [sed-br] inserir uma linha


> Oi pessoal,
>
> Se alguém puder ajudar, eu agradeço. O fato é que tenho um arquivo
> assim:
>
> textoaaaa
> textobbb
> textoccc
> numero: 8979
> textoggg
> textouiuu
> textotttt
> numero: 89765
>
> e assim por diante, e eu gostaria de colocar uma linha em branco,
> ficando assim:
>
> textoaaaa
> textobbb
> textoccc
> numero: 8979
>
> textoggg
> textouiuu
> textotttt
> numero: 765
>
> Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> poderíamos fazer uma busca por números e inserir uma linha em branco
> imediatamente após eles....(é assim?)
> Tem como fazer isso? (onde é que eu acho informação sobre expressões
> regulares como inserir linha, deletar linha, pois eu não sei quais
> caracter representa esses comandos).
>
> Abraço
> Mauricio
>
>
> ------------------------------------------------------------------------
> Best friends, most artistic, class clown Find 'em here:
> http://click.egroups.com/1/4054/0/_/161736/_/959180289/
> ------------------------------------------------------------------------
>
>
>

#205 De: # aurelio marinho jargas <aurelio@...>
Data: Qua, 7 de Jun de 2000 10:46 pm
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 5/6, Alexandre Biancalana:
> Ola Mauricio....
> Creio que voce possa usar algo como:
>
>  sed s/([1-90000])/$1\n/g

infelizmente não alexandre &:(
tem alguns detalhes que acho que você confundiu com outra
ferramenta.

o sed não interpreta \n na segunda parte do comando s (a parte do
texto que substituirá o antigo)

(aliás, esse é um pedido antigo dos usuários de sed...)


e o intervalo [1-90000] não é válido porque a classe [] só
representa um caractere (neste caso de 1 a 9 e o 0)

bem, os () precisam ser escapados no sed para agrupar

e para referenciar o conteúdo agrupado usa-se \1 e não $1 (como
no perl)


fora isso dá certo &:)


>
> ----- Original Message -----
> From: Mauricio Teixeira <msteixeira@...>
> To: <sed-br@egroups.com>
> Sent: Wednesday, May 24, 2000 9:01 AM
> Subject: [sed-br] inserir uma linha
>
>
> > Oi pessoal,
> >
> > Se alguém puder ajudar, eu agradeço. O fato é que tenho um arquivo
> > assim:
> >
> > textoaaaa
> > textobbb
> > textoccc
> > numero: 8979
> > textoggg
> > textouiuu
> > textotttt
> > numero: 89765
> >
> > e assim por diante, e eu gostaria de colocar uma linha em branco,
> > ficando assim:
> >
> > textoaaaa
> > textobbb
> > textoccc
> > numero: 8979
> >
> > textoggg
> > textouiuu
> > textotttt
> > numero: 765
> >
> > Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> > poderíamos fazer uma busca por números e inserir uma linha em branco
> > imediatamente após eles....(é assim?)
> > Tem como fazer isso? (onde é que eu acho informação sobre expressões
> > regulares como inserir linha, deletar linha, pois eu não sei quais
> > caracter representa esses comandos).
> >
> > Abraço
> > Mauricio


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#206 De: "Victor Apocalypse Rodrigues" <zedek@...>
Data: Qua, 7 de Jun de 2000 11:09 pm
Assunto: Re: inserir uma linha
zedek@...
Enviar e-mail Enviar e-mail
 
Então ficaria algo do tipo:

sed s/.{1,90000}/\1^M/g
ou  s/.{1,90000}/\\1^M/g (não sei quantas vezes tem que escapar a \)

     ?? =)
     Sendo o ^M obtido através de CTRL+V e depois ENTER.

     Falou!

Victor Apocalypse Rodrigues
Portal - Matrix Internet S.A.


----- Original Message -----
From: "# aurelio marinho jargas" <aurelio@...>
To: <sed-br@egroups.com>
Sent: Wednesday, June 07, 2000 7:46 PM
Subject: Re: [sed-br] inserir uma linha


> @ 5/6, Alexandre Biancalana:
> > Ola Mauricio....
> > Creio que voce possa usar algo como:
> >
> >  sed s/([1-90000])/$1\n/g
>
> infelizmente não alexandre &:(
> tem alguns detalhes que acho que você confundiu com outra
> ferramenta.
>
> o sed não interpreta \n na segunda parte do comando s (a parte do
> texto que substituirá o antigo)
>
> (aliás, esse é um pedido antigo dos usuários de sed...)
>
>
> e o intervalo [1-90000] não é válido porque a classe [] só
> representa um caractere (neste caso de 1 a 9 e o 0)
>
> bem, os () precisam ser escapados no sed para agrupar
>
> e para referenciar o conteúdo agrupado usa-se \1 e não $1 (como
> no perl)
>
>
> fora isso dá certo &:)
>
>
> >
> > ----- Original Message -----
> > From: Mauricio Teixeira <msteixeira@...>
> > To: <sed-br@egroups.com>
> > Sent: Wednesday, May 24, 2000 9:01 AM
> > Subject: [sed-br] inserir uma linha
> >
> >
> > > Oi pessoal,
> > >
> > > Se alguém puder ajudar, eu agradeço. O fato é que tenho um arquivo
> > > assim:
> > >
> > > textoaaaa
> > > textobbb
> > > textoccc
> > > numero: 8979
> > > textoggg
> > > textouiuu
> > > textotttt
> > > numero: 89765
> > >
> > > e assim por diante, e eu gostaria de colocar uma linha em branco,
> > > ficando assim:
> > >
> > > textoaaaa
> > > textobbb
> > > textoccc
> > > numero: 8979
> > >
> > > textoggg
> > > textouiuu
> > > textotttt
> > > numero: 765
> > >
> > > Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> > > poderíamos fazer uma busca por números e inserir uma linha em branco
> > > imediatamente após eles....(é assim?)
> > > Tem como fazer isso? (onde é que eu acho informação sobre expressões
> > > regulares como inserir linha, deletar linha, pois eu não sei quais
> > > caracter representa esses comandos).
> > >
> > > Abraço
> > > Mauricio
>
>
> --
> s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
> ${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq
>
>
> ------------------------------------------------------------------------
> Remember four years of good friends, bad clothes, explosive chemistry
> experiments.
> http://click.egroups.com/1/4051/0/_/161736/_/960417992/
> ------------------------------------------------------------------------
>
>
>

#207 De: # aurelio marinho jargas <aurelio@...>
Data: Qua, 7 de Jun de 2000 11:34 pm
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 7/6, Victor Apocalypse Rodrigues:
>     Então ficaria algo do tipo:
>
> sed s/.{1,90000}/\1^M/g
> ou  s/.{1,90000}/\\1^M/g (não sei quantas vezes tem que escapar a \)
>
>     ?? =)
>     Sendo o ^M obtido através de CTRL+V e depois ENTER.


infelizmente o ^M não funciona tb no sed... &:(
(no vi funciona)

vc deve escapar a quebra de linha, assim:
sed 's/isso/aquilo\
/'


quanto ao escape do \1, depende do interpretador de comandos
(shell), ou da linguagem de programação... o sed tanto com scripts
próprios quanto quando executado no prompt, o \1 funciona

já em outras linguagens, onde a ER é pré-processada e considerada
do tipo string, deve ser \\1 (como no php).

mas na dúvida, tenta com um, se não der coloca outro...


a construção .{1,90000} está correta, mas não é exatamente o que
ele queria, pois ela indica repetição. o desejado era um número
entre 0 e 90000, veja:

.{1,90000}   qualquer caractere (.) de 1 a 90000 vezes!
[0-9]{1,5}   um número ([0-9) de 1 a 5 vezes, ou seja,
                um número até 5 dígitos


sempre lembrando que o sed é o rei dos escapes: [0-9]\{1,5\}
&:)

e por fim, o \1 referencia ao conteúdo casado do primeiro parênteses
aberto. ei! mas vc não colocou parênteses, então o \1 nesse caso é
vazio.

ficaria mais ou menos assim:

sed 's/\([0-9]\{1,5\}\)/\1\
/'

sim, também tem que escapar os ()... (não falei que era o rei? &:) )
pra entender melhor a ER, basta tirar os escapes:

sed 's/([0-9]{1,5})/\1\
/'

ou seja, troque um número de até 5 dígitos por ele mesmo e uma quebra
de linha.


isso já funciona, mas quebrará a linha em todo número que achar no
texto, e o proposto inicial era quebra apenas na linha:

numero: 64764

então apenas colocamos a parte 'numero: ' no começo pra trocar apenas
na hora certa:

sed 's/(numero: [0-9]{1,5})/\1\
/'

ufa! acho que é isso &:)

mas lembra que para executar tem que escapar
(malditos escapes) os () e as {}

se não entendeu, ou errei em alguma parte, diz aí amigo.


obs.: deve ter uma meia dúzia de formas diferentes de resolver este
problema, esta ficou legal porque explica o uso dos registradores
(parênteses)


> From: "# aurelio marinho jargas" <aurelio@...>
> > @ 5/6, Alexandre Biancalana:
> > > Ola Mauricio....
> > > Creio que voce possa usar algo como:
> > >
> > >  sed s/([1-90000])/$1\n/g
> >
> > infelizmente não alexandre &:(
> > tem alguns detalhes que acho que você confundiu com outra
> > ferramenta.
> >
> > o sed não interpreta \n na segunda parte do comando s (a parte do
> > texto que substituirá o antigo)
> >
> > (aliás, esse é um pedido antigo dos usuários de sed...)
> >
> >
> > e o intervalo [1-90000] não é válido porque a classe [] só
> > representa um caractere (neste caso de 1 a 9 e o 0)
> >
> > bem, os () precisam ser escapados no sed para agrupar
> >
> > e para referenciar o conteúdo agrupado usa-se \1 e não $1 (como
> > no perl)
> >
> > > ----- Original Message -----
> > > From: Mauricio Teixeira <msteixeira@...>
> > > To: <sed-br@egroups.com>
> > > Sent: Wednesday, May 24, 2000 9:01 AM
> > > Subject: [sed-br] inserir uma linha
> > >
> > > > Se alguém puder ajudar, eu agradeço. O fato é que tenho um arquivo
> > > > assim:
> > > >
> > > > textoaaaa
> > > > textobbb
> > > > textoccc
> > > > numero: 8979
> > > > textoggg
> > > > textouiuu
> > > > textotttt
> > > > numero: 89765
> > > >
> > > > e assim por diante, e eu gostaria de colocar uma linha em branco,
> > > > ficando assim:
> > > >
> > > > textoaaaa
> > > > textobbb
> > > > textoccc
> > > > numero: 8979
> > > >
> > > > textoggg
> > > > textouiuu
> > > > textotttt
> > > > numero: 765
> > > >
> > > > Sendo que a linha "numero: 8979" vai de 1 a 90.000, quer dizer,
> > > > poderíamos fazer uma busca por números e inserir uma linha em branco
> > > > imediatamente após eles....(é assim?)
> > > > Tem como fazer isso? (onde é que eu acho informação sobre expressões
> > > > regulares como inserir linha, deletar linha, pois eu não sei quais
> > > > caracter representa esses comandos).


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#208 De: "Victor Apocalypse Rodrigues" <zedek@...>
Data: Qui, 8 de Jun de 2000 12:02 am
Assunto: Re: inserir uma linha
zedek@...
Enviar e-mail Enviar e-mail
 
----- Original Message -----
From: "# aurelio marinho jargas" <aurelio@...>
To: <sed-br@egroups.com>
Sent: Wednesday, June 07, 2000 8:34 PM
Subject: Re: [sed-br] inserir uma linha


> infelizmente o ^M não funciona tb no sed... &:(
> (no vi funciona)
>
> vc deve escapar a quebra de linha, assim:
> sed 's/isso/aquilo\
> /'
>

     Bom, pelo menos algo funciona, mas não é nada intuitivo... =)

>
> quanto ao escape do \1, depende do interpretador de comandos
> (shell), ou da linguagem de programação... o sed tanto com scripts
> próprios quanto quando executado no prompt, o \1 funciona
>
> já em outras linguagens, onde a ER é pré-processada e considerada
> do tipo string, deve ser \\1 (como no php).
>
> mas na dúvida, tenta com um, se não der coloca outro...
>
>
> a construção .{1,90000} está correta, mas não é exatamente o que
> ele queria, pois ela indica repetição. o desejado era um número
> entre 0 e 90000, veja:
>
> .{1,90000}   qualquer caractere (.) de 1 a 90000 vezes!
> [0-9]{1,5}   um número ([0-9) de 1 a 5 vezes, ou seja,
>                um número até 5 dígitos
>

     Bom, no caso, essa ER aceita numeros até 99999, e se ele só quer até
90000 poderia ser assim:

     ([0-8][0-9]{1,4})|(90000)

     Assim ele aceita numeros de 0 a 89999 ou 90000 =)

>
> sed 's/(numero: [0-9]{1,5})/\1\
> /'
>

     Agora seria:

sed 's/(numero: ([0-8][0-9]{1,4})|(90000))/\1\
/'

> ufa! acho que é isso &:)
>
> mas lembra que para executar tem que escapar
> (malditos escapes) os () e as {}
>

     Assim:

sed 's/\(numero: \([0-8][0-9]\{1,4\}\)|\(90000\)\)/\1\
/'

     ?? =)


> se não entendeu, ou errei em alguma parte, diz aí amigo.
>
>

     Bom, por enquanto entendi. Valeu!

Victor Apocalypse Rodrigues
Portal - Matrix Internet S.A.

#209 De: # aurelio marinho jargas <aurelio@...>
Data: Qui, 8 de Jun de 2000 1:12 am
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 7/6, Victor Apocalypse Rodrigues:
> > infelizmente o ^M não funciona tb no sed... &:(
> > (no vi funciona)
> > vc deve escapar a quebra de linha, assim:
> > sed 's/isso/aquilo\
> > /'
>
>     Bom, pelo menos algo funciona, mas não é nada intuitivo... =)

pois é, eu tb demorei uma cara até descobrir isso...


> > a construção .{1,90000} está correta, mas não é exatamente o que
> > ele queria, pois ela indica repetição. o desejado era um número
> > entre 0 e 90000, veja:
> >
> > .{1,90000}   qualquer caractere (.) de 1 a 90000 vezes!
> > [0-9]{1,5}   um número ([0-9) de 1 a 5 vezes, ou seja,
> >                um número até 5 dígitos
>
>     Bom, no caso, essa ER aceita numeros até 99999, e se ele só quer até
> 90000 poderia ser assim:
>
>     ([0-8][0-9]{1,4})|(90000)
>     Assim ele aceita numeros de 0 a 89999 ou 90000 =)

certo! só um detalhe, os parênteses de dentro não são
necessários:

      ([0-8][0-9]{1,4}|90000)


> > mas lembra que para executar tem que escapar
> > (malditos escapes) os () e as {}
>
>     Assim:
> sed 's/\(numero: \([0-8][0-9]\{1,4\}\)|\(90000\)\)/\1\
> /'

certo! novamente, dá pra tirar os parênteses de dentro. os dois
funcionam, a única diferença é que deixando os parêntess, você
abre um terceiro registrador que não é necessário.

ah! eu falei que a barra vertical | também deve ser escapada? &:)

sed 's/\(numero: \([0-8][0-9]\{1,4\}\|90000\)\)/\1\
/'


>     Bom, por enquanto entendi. Valeu!

legal!

então só pra melhorar ainda mais, como estamos jogando _toda_ a
primeira parte do comando s num registrador:

's/\(expressão\)/\1/\

temos o indicador &, que se colocado na segunda parte do comando
s, representa tudo o que foi casado na primeira parte (ou seja,
exatamente para isso que estes parênteses serviam), então:

's/\(expressão\)/\1/\
/'

é o mesmo que:

's/expressão/&/\
/

sem precisar dos parênteses, tornando a expressão menor e
alocando menos memória (não que isso importe muito em textos
pequenos)

aí fica:

sed 's/numero: \([0-8][0-9]\{1,4\}\|90000\)/&\
/'



--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#210 De: Eliphas Levy Theodoro <eliphas@...>
Data: Qui, 8 de Jun de 2000 1:23 am
Assunto: Re: inserir uma linha
eliphas@...
Enviar e-mail Enviar e-mail
 
# aurelio marinho jargas, @ 22:12:

> sem precisar dos parênteses, tornando a expressão menor e
> alocando menos memória (não que isso importe muito em textos
> pequenos)
>
> aí fica:
>
> sed 's/numero: \([0-8][0-9]\{1,4\}\|90000\)/&\
> /'

eu já prefiro a gambiar^Wopção de procurar a linha a mudar. isso
já pouparia o sed de procurar em cada linha do texto pela expressão. e o
xunxo de colar a próxima linha, copiar o \n do meio dela duas vezes
também é legal, assim dá pra fazer em uma linha só (e ficou menor) ':)

sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}'

--
eliphas

I don't suffer from insanity, I enjoy every minute of it.

#211 De: # aurelio marinho jargas <aurelio@...>
Data: Qui, 8 de Jun de 2000 3:07 am
Assunto: Re: inserir uma linha
aurelio@...
Enviar e-mail Enviar e-mail
 
@ 7/6, Eliphas Levy Theodoro:
> # aurelio marinho jargas, @ 22:12:
> > sem precisar dos parênteses, tornando a expressão menor e
> > alocando menos memória (não que isso importe muito em textos
> > pequenos)
> >
> > aí fica:
> >
> > sed 's/numero: \([0-8][0-9]\{1,4\}\|90000\)/&\
> > /'
>
> eu já prefiro a gambiar^Wopção de procurar a linha a mudar. isso

gambiarra nada, assim é melhor mesmo &:)


> já pouparia o sed de procurar em cada linha do texto pela expressão. e o
> xunxo de colar a próxima linha, copiar o \n do meio dela duas vezes
> também é legal, assim dá pra fazer em uma linha só (e ficou menor) ':)
>
> sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}'

mas usar o N é apelação...
se fizer em duas linhas como antes fica mais rápido, ou então
usando o 'a' como antes você já tinha feito:

sed -e '/^numero: [0-9]\+/a \' -e ''

--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#212 De: Eliphas Levy Theodoro <eliphas@...>
Data: Qui, 8 de Jun de 2000 3:23 am
Assunto: Re: inserir uma linha
eliphas@...
Enviar e-mail Enviar e-mail
 
# aurelio marinho jargas, @ 00:07:

> @ 7/6, Eliphas Levy Theodoro:
> > # aurelio marinho jargas, @ 22:12:
> > > sem precisar dos parênteses, tornando a expressão menor e
> > > alocando menos memória (não que isso importe muito em textos
> > > pequenos)
> > >
> > > aí fica:
> > >
> > > sed 's/numero: \([0-8][0-9]\{1,4\}\|90000\)/&\
> > > /'
> >
> > eu já prefiro a gambiar^Wopção de procurar a linha a mudar. isso
>
> gambiarra nada, assim é melhor mesmo &:)

a gambiarra é mais pra baixo ':)

> > já pouparia o sed de procurar em cada linha do texto pela expressão. e o
> > xunxo de colar a próxima linha, copiar o \n do meio dela duas vezes
> > também é legal, assim dá pra fazer em uma linha só (e ficou menor) ':)
> >
> > sed '/^numero: [0-9]\+/{N;s/\(\n\)/\1\1/;}'
>
> mas usar o N é apelação...

não falei que era xunxo? ':P

> se fizer em duas linhas como antes fica mais rápido, ou então
> usando o 'a' como antes você já tinha feito:
>
> sed -e '/^numero: [0-9]\+/a \' -e ''

nossa, que ER perfeita! quem fez? '8-)

--
eliphas

I don't suffer from insanity, I enjoy every minute of it.

#213 De: # aurelio marinho jargas <aurelio@...>
Data: Sex, 16 de Jun de 2000 10:43 pm
Assunto: filtro sed para apagar a propaganda do egroups
aurelio@...
Enviar e-mail Enviar e-mail
 
o padrão da propaganda do egroups, que vem em todo fim de
mensagem é:

------------- (com 72 hífens)
some text
some text
...
http://click.egroups.com
some text
...
------------- (com 72 hífens)


fiz um filtro em sed pra arrancar fora essa propaganda da
mensagem:

sed '/^\(> \)*-\{72\}$/{N;:l;/-\{72\}$/bs;N;bl;:s;s%^.*\n\(>
\)*http://click\.egroups\.com.*%%;}'


esse filtro também pega texto citado com '> ':

> > > ------------- (com 72 -)
> > > some text
> > > some text
> > > ...
> > > http://click.egroups.com
> > > some text
> > > ...
> > > ------------- (com 72 -)


quem faz isso é o '\(> \)*'



pra que usa procmail, basta colocar no .procmailrc:

:0 fhw
* Delivered-To:.*@egroups.com
| sed '/^\(> \)*-\{72\}$/{N;:l;/-\{72\}$/bs;N;bl;:s;s%^.*\n\(>
\)*http://click\.egroups\.com.*%%;}'


a tática do filtro é usar estruturas parecidas com o goto de
certas linguagens de programação.

fiz as marcas
:l e :s (loop e comando s)


/^\(> \)*-\{72\}$/       ele procura a primeira linha da assinatura,
{
N                        apenda a próxima linha
:l                       marca l
/-\{72\}$/bs             se for a última linha da assinatura, pule para :s
N                        caso não tenha pulado na anterior, apenda de novo
bl                       pula para l (aqui é o reinício do loop)
:s                       marca s

s%^.*\n\(> \)*http://click\.egroups\.com.*%%
                          se tiver a cadeia http://click.egroups.com
                          apaga toda a assinatura
}


--
s/:(/:)/;s/:(/:|/;s/:(/>(/,http://www.conectiva.com.br/~aurelio
${linux/mouse/},ctrl+a],http://www.brasmidia.com/dumbs,<esc>:wq

#214 De: "Ademar de Souza Reis Jr." <adesr@...>
Data: Seg, 19 de Jun de 2000 3:45 am
Assunto: Re: filtro sed para apagar a propaganda do egroups
adesr@...
Enviar e-mail Enviar e-mail
 
Em 16/06/00 às 19:43, # aurelio marinho jargas escreveu:

>
> pra que usa procmail, basta colocar no .procmailrc:
>
> :0 fhw
> * Delivered-To:.*@egroups.com
> | sed '/^\(> \)*-\{72\}$/{N;:l;/-\{72\}$/bs;N;bl;:s;s%^.*\n\(>
\)*http://click\.egroups\.com.*%%;}'

Não pode ter esse "h" no header do filtro.

h == header, e, no caso, estamos filtrando o corpo da msg.

[]'s
    - Ademar

--
================================================
Ademar de Souza Reis Jr. - ademar@...
http://www.inf.ufpr.br/~asr98
Estudante de Informatica / Bolsista PET - UFPR
Registered Linux User #71790
Curitiba - PR - Brasil

-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they
stopped at 65,535 to prevent an overflow."

mensagens 185 - 214 de 5042   Mais antigos  |  < Mais antigos  |  Mais recentes >  |  Mais recentes
mensagens 185 - 214 de 5042   Mais antigos  |  < Mais antigos  |  Mais recentes >  |  Mais recentes
Avançado

Copyright © 2010 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda