Atualmente estou usando o AWK para localizar e substituir uma parte das três primeiras ocorrências de uma string. A string é formatada como tal e há muitas dessas strings no arquivo:
func(tempID="39849235",count='12');
Usando esse link , consegui encontrar um método de usar o AWK para localizar e substituir as três primeiras instâncias da string. Eu mudei para o que eu precisava fazer, e um trecho do meu script está abaixo:
id=12349876
awk 'BEGIN {matches=0}
matches < 3 && /.*tempID.*/ { sub(/tempID="[0-9]+"/,"tempID='"$id"'"); matches++ }
{ print $0 }' filName.py >filName.py.changed
O objetivo do código acima é combinar em qualquer linha que contenha tempID e substituir o número atribuído a tempID por um valor mantido em uma variável nomeada $id
. O find and replace funciona bem, mas a única questão que pareço ter é que, independentemente de como eu a estruturo, a saída imprime o $ id sem aspas. Eu tentei escapar de citações e colocar carrapatos simples, mas independentemente da linha é alterada para:
func(tempID=39849235,count='12');
Eu tentei remover as aspas duplas em torno da parte de substituição e estruturá-lo como tempID="$id"
, mas infelizmente isso apenas substitui o número de identificação com a seqüência de caracteres $id
.
Por favor, deixe-me saber se existe uma maneira de encontrar e substituir o valor tempID e coloque o valor entre aspas. Eu não estou preso com AWK, então qualquer outro método com qualquer outro utilitário como o sed funcionaria bem também.