Olá Ronaldo, é verdade, o Rodrigo tem o melhor cenário pois diz que não
tem linhas seguidas e só quer substituir a primeira ocorrência.
Fazendo os teste aqui e vendo a tua solução é que eu percebi o tamanho
da encrenca pra fazer isso usando sed.
Como o problema é substituir só a primeira ocorrência, pensei em indicar
a linha pesquisando com grep, mas daí já não é mais 'sed puro'.
sed "$(grep -n -A1 AAA testeComErro|grep -m1 'EEE'|cut -d- -f1)
s/EEE/BBB\nCCC\nDDD\n&/" testeComErro
Abraços Paulo Bettega
On 12-10-2014 16:50, Ronaldo Ferreira de Lima address@hidden [shell-script]
wrote:
Saudações Paulo,
On Sun, Oct 12, 2014 at 04:20:06PM -0300, Paulo Bettega address@hidden
[shell-script] wrote:
> Nesse caso minha idéia falha, pois perde as duas linhas AAA
> seguidas, com EEE depois
>
> sed '/AAA/ {N;s/EEE/&\nBBB\nCCC\nDDD/;}' testeComErro
No cenário que o Rodrigo descreveu, esse problema não ocorre, então essa
solução funciona bem, precisa apenas trocar o '&' de lugar para completar
a sequência corretamente: "AAA\nBBB\nCCC\nDDD\nEEE", da forma como está,
ele faz: "AAA\nEEE\nBBB\nCCC\nDDD".
> Abraços Paulo Bettega
[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com