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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] SED: Inserir linhas entre dois paterns.


From: Rodrigo Tenorio
Subject: Re: [shell-script] SED: Inserir linhas entre dois paterns.
Date: Sun, 12 Oct 2014 16:14:33 -0300

Paulo,

Obrigado pela resposta.
O ronaldo já havia feito algo parecido com sua sugestão:
diff -y teste <(sed '/^AAA$/{n;s/^EEE$/BBB\nCCC\nDDD\n&/}' teste)

No caso de sua sugestão, não atendeu por que BBB, CCC e DDD, devem ser inseridos entre AAA e EEE.
Compreende?

* * * * * * *

Ronaldo,

Camarada, o caso é para modificar a primeira ocorrência e realmente deixar o resto do arquivo intacto.

Não entendi o sed completamente:
1 {
x;
s/.*/NAO/;
x;
};
:a;
/^AAA$/ {
x;/SIM/{x;bb;};x;
n;
s/^EEE$/BBB\nCCC\nDDD\n&/;
Ta;
x;s/NAO/SIM/;x;
}
:b

Se não for incomodo, poderia me explicar de maneira mais detalhada?
Essa parte de hold space e patern space me confundiram...
E não funcionou.

E o também o sed sugerido em segundo não funcionou.
sed ':a;N;$!Ban;s/\(^\|\n\)\(AAA\)\n\(EEE\)\(\n\|$\)/\1\2\nBBB\nCCC\nDDD\n\3\4/' testeComErro

E eu não compreendi a parte "$!Ban;".

Em 12 de outubro de 2014 12:50, Ronaldo Ferreira de Lima address@hidden [shell-script] <address@hidden> escreveu:
 

On Sun, Oct 12, 2014 at 12:01:55PM -0300, Jimmy Isaac Neutron wrote:
[...]

Só lembrei agora (memória ruim ...) de uma maneira bem mais simples de
resolver esses tipos de problemas:

$ sed ':a;N;$!Ban;s/\(^\|\n\)\(AAA\)\n\(EEE\)\(\n\|$\)/\1\2\nBBB\nCCC\nDDD\n\3\4/' testeComErro

colocamos todo o arquivo num único pattern space e aplicamos uma
expressão regular com back references. É mais simples de controlar o
número de substituições de mesmo padrão inserindo no final do comando
's' o modificador 'g' para todas ou o número de substituições a fazer.

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com



reply via email to

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