Imprime o conteúdo do arquivo do caractere desejado e também finaliza para o caractere desejado

1

Eu tenho este arquivo com o conteúdo escrito abaixo.

Eu quero a saída do meu arquivo informando com ".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
    
por yisha 09.09.2014 / 12:06

3 respostas

3

Você pode usar awk :

awk '/\.SUBCKT C032_THS_COMPARATOR/{p=1};p;/\.ENDS/{p=0}' file

Explicação

  • Se virmos .SUBCKT C032_THS_COMPARATOR , defina p = 1 .
  • Se virmos .ENDS , defina p = 0 .
  • Dependendo do valor de p , podemos rastrear a posição atual dentro ou fora do intervalo, se em, p é 1 , ou seja, true em contexto booleano, fazendo com que a ação padrão awk imprima toda a linha de entrada . Se sair, p é 0 , significando falso em contexto booleano, awk não faz nada.

ou sed :

sed -e '/\.SUBCKT C032_THS_COMPARATOR/,/\.ENDs/!d' file
    
por 09.09.2014 / 12:12
4

Tente este:

sed -n '/\.SUBCKT\ C032_THS_COMPARATOR/,/\.ENDS/p' filename

HTH, elogios,

    
por 09.09.2014 / 12:16
2

Outro sed:

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

Embora - apenas a julgar pelos dados fornecidos, talvez o endereço .ENDS seja desnecessário.

Suponho que você também possa fazer:

sed '/^\..*COMPARATOR/,/^\./!d'
    
por 09.09.2014 / 12:42