echo ... | sed -e '3a test' -e '5a test'
Se a operação é mais complexa do que neste caso, você pode usar uma estrutura como esta:
sed 'b pattern; : action; a \
lalala
b end; : pattern; 3b action; 5b action; : end'
Ou seja. você coloca todos os comandos necessários entre b pattern;
e b end;
.
E você adiciona todos os seus padrões (números de linha ou qualquer outro) depois de : pattern;
.
O que acontece é isto:
-
O primeiro comando salta sobre a parte de ação (talvez seja mais fácil de ler se os padrões estiverem no início e
b end;
diretamente antes da parte de ação). -
Se um padrão coincide, a execução vai para a parte de ação. Após a execução da parte de ação, salta para o final.
Eu tento arrumar isso:
sed '3b action; 5b action; b end; : action; a \
lalala
: end'
Em uma única linha, seria como:
sed "3b idAction; 5b idAction; b; : idAction; a test"
Portavelmente, você precisa escrever:
sed '
3b action
5b action
b
: action
a\
lalala'
( b
sem ramificações de rótulo até o final, para que você não precise de um rótulo end
explícito, ;
é um caractere válido em um rótulo nas implementações sed
padrão).