Se entendi corretamente sua pergunta, você está procurando
sed 's/\(pattern {[^}]*}\)/;/g'
onde substitui tudo o que corresponde a \(...\) .
A saída:
hello {sdsdsdsds} pattern {askjdasjkdjasd}; hello {siadsd} pattern {iuewer};
Se eu tiver algo parecido com isto:
hello {sdsdsdsds} pattern {askjdasjkdjasd} hello {siadsd} pattern {iuewer}
Se o padrão for correspondido antes de {*} , preciso adicionar um ; . Saída:
hello {sdsdsdsds} pattern {askjdasjkdjasd}; hello {siadsd} pattern {iuewer};
E isso é apenas uma linha, sim.
Agora, pensei em algo assim:
's{.*}/
Mas não consigo descobrir como fazer com que sed se lembre do conteúdo de .* .
Então existe isso,
'/pattern\ {.*}/ s/$/;/'
Mas isso não funcionará, já que é apenas uma linha.
Tags text-processing sed shell