sed는 줄 끝에서 일치하는 단어를 대체합니다.

sed는 줄 끝에서 일치하는 단어를 대체합니다.

nfin특정 일치 패턴 뒤, 즉 줄 끝까지의 모든 문자를 제거하려고 합니다 .

샘플 텍스트

xxsac00mi126 vddai:f1042 tkeept_iph xsac00.f1040 vdda lvtpfet m=1 nf=1 nfin=2 pdej=1.6e-07 asej=3.2e-16 lrsd=4e-08 pre_layout_local=0 

주문하다

sed -i "s/nfin\=[0-9].*//g" sample_text

원하는 출력

xxsac00mi126 vddai:f1042 tkeept_iph xsac00.f1040 vdda lvtpfet m=1 nf=1 nfin=2  

답변1

이 시도 sed:

sed -E 's/ pdej.*$//'

예:

sed -E 's/ pdej.*$//' file.txt 
xxsac00mi126 vddai:f1042 tkeept_iph xsac00.f1040 vdda lvtpfet m=1 nf=1 nfin=2

여기에는 다음이 file.txt포함됩니다.

cat file.txt 
xxsac00mi126 vddai:f1042 tkeept_iph xsac00.f1040 vdda lvtpfet m=1 nf=1 nfin=2 pdej=1.6e-07 asej=3.2e-16 lrsd=4e-08 pre_layout_local=0


또는:
nfin일종의 앵커 로 사용하려면 다음을 사용하십시오.

sed -E 's/(.*nfin=[0-9]).*/\1/' file.txt 
xxsac00mi126 vddai:f1042 tkeept_iph xsac00.f1040 vdda lvtpfet m=1 nf=1 nfin=2

답변2

sed -i "/nfin=[0-9]/{s//&\n/;P;d;}" sample_text

nfin=[0-9]
다음을 사용하여 For line(s) 뒤에 남은 줄을 삭제합니다 nfin=[0-9].

  • \n패턴 뒤에 줄줄을 넣습니다 ( &).
  • Print 라인은 \newline 앞에 옵니다.
  • d행 삭제(더 이상 인쇄되지 않음)

답변3

sed -ne 's/[ ]nfin=[^ ]*/&\n/;P' < your_spice_netlist

그러나 spice 넷리스트에는 인스턴스('x') 또는 줄 경계를 넘는 모든 요소가 있을 수 있다는 점을 기억해야 합니다. 이 경우 nfin 매개변수가 +nfin =23과 같은 줄에 있을 수 있기 때문에 위의 sed 코드가 작동하지 않을 수 있습니다. 또한 때때로 "nfin"이 매개변수화된 것처럼 보일 수 있습니다(예: nfin='width*0.5 + 1./nfac*len'). 따라서 nfin=[0-9]는 일치하지 않습니다.

그러나 여러 줄이 없는지 확인할 수 있다면(적어도 어떤 경우에는) 위의 내용이 안정적으로 작동할 것입니다. 탭 문자도 없습니다.

관련 정보