regsub
TcL을 사용하여 패턴을 검색하고 줄 시작 부분에 문자를 삽입하고 싶습니다. 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"
}