|
From: | Paulo Bettega |
Subject: | Re: [shell-script] SED: Inserir linhas entre dois paterns. |
Date: | Sun, 12 Oct 2014 17:25:39 -0300 |
User-agent: | Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |