擅长:python、mysql、java
<p>这可能适用于您(GNU-sed):</p>
<pre><code>sed -E '/record \{/{:a;N;/\}/!ba;/my_id_2/!b;s/(record \{.*)\1.*/\1/;t;d}' file
</code></pre>
<p>使用您最初的方法,但使用贪婪进行额外的测试,如果成功,它将保留匹配字符串的前面。如果没有这样的匹配,则恢复并像以前一样删除整个匹配字符串</p>
<p>注意:这可能会引入一些不需要的填充物,将其移除作为读者的练习;-)</p>