从所需字符开始打印文件内容,并打印到所需字符结束

从所需字符开始打印文件内容,并打印到所需字符结束

我有这个文件,内容写在下面。

我想要我的文件的输出声明".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, pis 0,在布尔上下文中表示 false,awk则不执行任何操作。

或者sed

sed -e '/\.SUBCKT C032_THS_COMPARATOR/,/\.ENDs/!d' file

答案3

另一个 sed:

sed '1,/^$/d;/\.ENDS/q'

不过,仅从提供的数据来看,该.ENDS地址可能是不必要的。

我想你也可以这样做:

sed '/^\..*COMPARATOR/,/^\./!d'

相关内容