todos os caracteres após o comando a
são tratados como uma string a ser anexada, portanto, sed
irá reclamar sobre unmatched '{'
Uma maneira é usar -e
(testado com GNU sed
, não tenho certeza sobre portabilidade)
$ sed -e '/module sac1/ , /endmodule/ {/pmos_bulk_vt3 xi92/a\ rpmos xi92 (net307, rblt, rdb );' -e '}' ip.txt
module sac1 ( out_ports , in_ports );
output out_ports;
input in_ports;
pmos_bulk_vt3 xi92 ( net307, rdb, rblt, vnwa );
rpmos xi92 (net307, rblt, rdb );
pmos_bulk_vt3 xi82 ( vddai, sel_b, net287, vnwa );
endmodule
module sac2 ( out_ports , in_ports );
output out_ports;
input in_ports;
pmos_bulk_vt3 xi92 ( net307, rdb, rblt, vnwa );
pmos_bulk_vt3 xi82 ( vddai, sel_b, net287, vnwa );
endmodule
- Observe que
\
não é necessário para escapar de caracteres como(
na seção de substituição
Ou você também pode usar
$ sed '/module sac1/ , /endmodule/ {/pmos_bulk_vt3 xi92/a\ rpmos xi92 (net307, rblt, rdb );
}' ip.txt
- pressione Enter após o término do comando
a
e adicione o restante do comando - Veja também GNU sed manual - Múltipla sintaxe de comandos