Como adiciono algo ao final de “}” se um padrão é correspondido?

1

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.

    
por DisplayName 28.11.2014 / 21:52

1 resposta

2

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};
    
por 28.11.2014 / 22:03