Я хочу добавить определенный текст только после совпадения с определенной строкой.
В настоящее время в примере видно, что я добавил строку rpmos xi92
; могу ли я использовать переключатель добавления в sed
в соответствии с этой тренировкой
module sac1 ( 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
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
sed -i '/module sac1/ , /endmodule/ {/pmos_bulk_vt3 xi92/a rpmos xi92 \( net307\, rblt\, rdb \)\;}'
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
все символы после команды a
рассматриваются как добавляемая строка, поэтому sed
будет жаловаться наunmatched `{'
Один из способов — использовать-e
(протестировано с GNU sed
, не уверен в переносимости)
$ 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
\
не требуется для экранирования символов, таких как (
, в разделе замены Или вы также можете использовать
$ sed '/module sac1/, /endmodule/ {/pmos_bulk_vt3 xi92/a\ rpmos xi92 (net307, rblt, rdb );
}' ip.txt
a
, а затем добавьте оставшуюся часть команды