我有这个文件,内容写在下面。
我想要我的文件的输出声明".SUBCKT C032_THS_COMPARATOR" and end with ".ENDS"
:
.SUBCKT C032_THS_DPDNPROT_cdm_tdpdnw TOPROTECT VPLUS
.SUBCKT C032_THS_DPDNPROT_cdm_tdndsx TOPROTECT VMINUS
*
************************************************************************
* Library Name: DUMMY
* Cell Name:
* View Name: schematic
.SUBCKT C032_THS_COMPARATOR DGND DVDD Icomp PDANAN
+ VOUT VP
*.PININFO CH:I CHN:I Icomp:I PDANA:I PDBANA:I VN:I VP:I VOUT:O AGND:B AVDD:B
*.PININFO DGND:B DVDD:B
MP9 net11 CHN D1 AVDD egpfet m=1 w=2.5u l=0.2u nf=1.0 pccrit=0 plorient=1
+ ngcon=1 p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
MP3 net044 net029 DVDD DVDD egpfet m=1 w=4u l=0.15u nf=1.0 pccrit=0 plorient=1
+ ngcon=1 p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
MP1 V V V V egpfet m=2 w=3u l=0.5u nf=1.0 pccrit=0 plorient=1 ngcon=1
+ p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
MP0 net11 D1 AVDD AVDD egpfet m=1 w=3u l=2u nf=1.0 pccrit=0 plorient=1 ngcon=1
+ p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
MP2 net7 D1 AVDD AVDD egpfet m=1 w=3u l=2u nf=1.0 pccrit=0 plorient=1 ngcon=1
+ p_la
1
+ ngcon=1 p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
MN4 net7 c TAIL AGND egnfet m=2 w=8u l=1u nf=1.0 pccrit=0 plorient=1 ngcon=1
+ p_la=0 ptwell=0 swacc=0 swrg=-1 swrsub=-1 nqs=0 mismatch=1
.ENDS
答案1
试试这个:
sed -n '/\.SUBCKT\ C032_THS_COMPARATOR/,/\.ENDS/p' filename
HTH,干杯,
答案2
您可以使用awk
:
awk '/\.SUBCKT C032_THS_COMPARATOR/{p=1};p;/\.ENDS/{p=0}' file
解释
- 如果我们看到
.SUBCKT C032_THS_COMPARATOR
,就设置p = 1
。 - 如果我们看到
.ENDS
,就设置p = 0
。 - 根据
p
值,我们可以跟踪当前位置是在范围内还是在范围外,如果在,p
则为1
,在布尔上下文中表示 true,导致awk
默认操作打印整个输入行。如果 out,p
is0
,在布尔上下文中表示 false,awk
则不执行任何操作。
或者sed
:
sed -e '/\.SUBCKT C032_THS_COMPARATOR/,/\.ENDs/!d' file
答案3
另一个 sed:
sed '1,/^$/d;/\.ENDS/q'
不过,仅从提供的数据来看,该.ENDS
地址可能是不必要的。
我想你也可以这样做:
sed '/^\..*COMPARATOR/,/^\./!d'