如果模式匹配,如何在“}”末尾添加内容?

如果模式匹配,如何在“}”末尾添加内容?

如果我有看起来像这样的东西:

hello {sdsdsdsds} pattern {askjdasjkdjasd} hello {siadsd} pattern {iuewer} 

因此,如果模式之前匹配{*},我需要添加一个;.输出:

hello {sdsdsdsds} pattern {askjdasjkdjasd}; hello {siadsd} pattern {iuewer};

是的,这只是一行。

现在,我想到了这样的事情:

's{.*}/

但我不太清楚如何sed记住 的内容.*

然后就是这个,

'/pattern\ {.*}/ s/$/;/'

但这是行不通的,因为它只有一行。

答案1

如果我正确理解你正在寻找的问题

sed 's/\(pattern {[^}]*}\)/\1;/g'

where\1替换里面匹配的所有内容\(...\)

输出:

hello {sdsdsdsds} pattern {askjdasjkdjasd}; hello {siadsd} pattern {iuewer};

相关内容