substituto no início da linha

1

Eu quero pesquisar um padrão e inserir um caractere no início de uma linha usando regsub em TcL. Eu tenho que usar apenas TcL

Arquivo de entrada

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

Saída desejada

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

comando usado

regsub -nocase {pch_mac} $file_pointer {\*$1} file_pointer
    
por JigarGandhi 01.06.2016 / 09:01

1 resposta

2

Se você quiser adicionar texto no início da linha, terá que combinar todos os caracteres do começo da linha:

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

Aqui, & na peça de substituição é substituído por todo o texto que correspondeu à expressão, ou seja, todos os caracteres do início da linha para "pch_mac". Consulte o link

Perl usa a notação $1 , Tcl usa se você usa parênteses de captura:

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

Outra maneira de escrever isso é

if {[string first pch_mac $file_pointer] != -1} {
    set file_pointer "*$file_pointer"
}
    
por 01.06.2016 / 22:14