sed:删除两个字符串之间的字符

Spa*_*ky1 1 regex bash sed

对于xml文件中的所有事件,我想使用sed删除"foo = 1&"和"bar = 2&"之间的所有字符.

<url>http://example.com?addr=123&foo=1&s=alkjasldkffjskdk$bar=2&f=jkdng</url>
<url>http://example.com?addr=124&foo=1&k=d93ndkdisnskiisndjdjdj$bar=2&p=dnsks</url>
Run Code Online (Sandbox Code Playgroud)

这是我的sed命令:

sed -e '/foo=1&/,/bar=2&/d' sample.xml
Run Code Online (Sandbox Code Playgroud)

当我运行它时,文件保持不变.

以上是基于这个例子:找到"string1"并删除它和"string2"

nos*_*sid 7

使用substitution命令而不是delete命令:

sed -e 's/\(foo=1&\).*\(bar=2&\)/\1\2/'
Run Code Online (Sandbox Code Playgroud)