Isso pode ajudar seu problema a ser resolvido.
(Consulte: )
O Source.txt tem duas linhas a seguir:
OldString
NewString
Antes da execução do comando, o Target.txt tem as seguintes linhas:
OldString ==> NewString
This is Target File containing OldString now.
OldString is to be replaced.
NewString won't get impacted.
Uso:
awk -v lookupStr='awk 'NR==1' Source.txt' -v replacementStr='awk 'NR==2' Source.txt' 'NR==2 && (idx=index($0,lookupStr)) { $0=substr($0,1,idx-1) replacementStr substr($0,idx+length(lookupStr)) } 1' Target.txt > temp.txt && mv temp.txt Target.txt
Execução do comando de postagem O destino.txt tem a seguinte linha:
OldString ==> NewString
This is Target File containing NewString now.
OldString is to be replaced.
NewString won't get impacted.
Aqui eu defini duas variáveis lookupStr e replacementStr. ambos são atribuídos à linha # 1 e à linha # 2 de Source.txt, respectivamente.
Então, na linha Sencond de Target.txt, estou substituindo o conteúdo de $ 0 pelo primeiro caractere até o índice de lookupStr (ou seja, "OldString"), acrescentando o replacementStr (ou seja, "NewString") e concatenando o restante dos caracteres. No final, a saída está sendo gravada em um temp.txt e a mesma é renomeada para Target.txt
Se você precisar fazer esse exercício de substituição em um arquivo inteiro, basta remover a condição NR == 2 & & do comando acima.