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
패턴 뒤에 줄줄을 넣습니다 (&
).P
rint 라인은\n
ewline 앞에 옵니다.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]는 일치하지 않습니다.
그러나 여러 줄이 없는지 확인할 수 있다면(적어도 어떤 경우에는) 위의 내용이 안정적으로 작동할 것입니다. 탭 문자도 없습니다.