줄의 시작 부분으로 바꾸기

줄의 시작 부분으로 바꾸기

regsubTcL을 사용하여 패턴을 검색하고 줄 시작 부분에 문자를 삽입하고 싶습니다. TcL만 사용할 수 있어요

입력 파일

mna1 x a1 vss vbn nch_svt_mac nfin=nfin_n1 l=ln1
mna2 x a2 vss vbn nch_svt_mac nfin=nfin_n2 l=ln2
mpa2 vdd a2 net10 vbp pch_mac nfin=nfin_p2 l=lp2
mpa1 net10 a1 x vbp pch_svt_mac nfin=nfin_p1 l=lp1

원하는 출력

mna1 x a1 vss vbn nch_svt_mac nfin=nfin_n1 l=ln1
mna2 x a2 vss vbn nch_svt_mac nfin=nfin_n2 l=ln2
*mpa2 vdd a2 net10 vbp pch_mac nfin=nfin_p2 l=lp2
mpa1 net10 a1 x vbp pch_svt_mac nfin=nfin_p1 l=lp1

사용된 명령

regsub -nocase {pch_mac} $file_pointer {\*$1} file_pointer

답변1

당신이 원한다면시작줄 내에서 줄 시작 부분의 모든 문자와 일치해야 합니다.

regsub {^.*pch_mac} $file_pointer {*&} file_pointer

여기서 &대체 부분은 표현식과 일치하는 모든 텍스트, 즉 줄 시작 부분부터 "pch_mac"까지의 모든 문자로 대체됩니다. 바라보다http://tcl.tk/man/tcl8.6/TclCmd/regsub.htm

Perl은 이 $1표기법을 사용하고, Tcl은\1 만약에캡처 대괄호를 사용합니다.

regsub {^(.*pch_mac)} $file_pointer {*\1} file_pointer

또 다른 쓰는 방법은

if {[string first pch_mac $file_pointer] != -1} {
    set file_pointer "*$file_pointer"
}

관련 정보