특정 줄이 일치하는 부분에만 특정 텍스트를 추가하고 싶습니다.
현재 이 예에서는 다음 줄을 추가한 것을 볼 수 있습니다 . 이 줄을 따라 추가 스위치를 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
답변1
명령 뒤의 모든 문자는 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
- 명령이 끝나면 Enter를 누르고
a
나머지 명령을 추가하십시오. - 당신은 또한 볼 수 있습니다GNU sed 매뉴얼 - 다중 명령 구문