![如果模式匹配,如何在“}”末尾添加内容?](https://linux22.com/image/34428/%E5%A6%82%E6%9E%9C%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%E2%80%9C%7D%E2%80%9D%E6%9C%AB%E5%B0%BE%E6%B7%BB%E5%8A%A0%E5%86%85%E5%AE%B9%EF%BC%9F.png)
如果我有看起来像这样的东西:
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};