Então, eu entendo como usar sed
, ou seja, ao pesquisar usando curingas, .*
. O problema que estou enfrentando é como localizar e substituir usando o caractere curinga nas duas vezes, nas partes de pesquisa e substituição do comando. Um exemplo ajudará a ilustrar melhor isso:
$cat test.txt
a(bc)
a(l)
a(d)
a(loke)
a(babab)
a(h323)
$
Eu quero acrescentar uma string, _mynewstring
, ao que vier depois de a([string of some length]
. Por favor note que não posso simplesmente encontrar e substituir o parêntese de fechamento porque há outros parênteses de fechamento em cada linha (o que deixo de fora para facilitar o exemplo), mas nenhum cujo parêntese de abertura tem um a
na frente dele. A saída deve se parecer com:
$cat test.txt
a(bc_mynewstring)
a(l_mynewstring)
a(d_mynewstring)
a(loke_mynewstring)
a(babab_mynewstring)
a(h323_mynewstring)
$
Eu tentei o seguinte,
sed -i 's/a(.*)/a(.*_mynewstring)/g' test.txt
mas isso apenas gera,
cat test.txt
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
É evidente que o caractere curinga está sendo usado como uma string literal, o que não é o que eu preciso, mas depois de pesquisá-lo exaustivamente, não sei ao certo como faria isso de outra forma. Eu tentei soluções usando awk
, grep
e combinações de todos os três sem sucesso. Obrigado por qualquer ajuda que você possa fornecer.