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

时间:2013-10-04 17:12:10

标签: regex bash sed

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

<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>

这是我的sed命令:

sed -e '/foo=1&/,/bar=2&/d' sample.xml

当我运行它时,文件不变。

以上内容基于此示例:Find "string1" and delete between that and "string2"

2 个答案:

答案 0 :(得分:6)

使用 substitution 命令代替 delete 命令:

sed -e 's/\(foo=1&\).*\(bar=2&\)/\1\2/'

答案 1 :(得分:2)

你应该使用

 sed -i -e 's/\(foo=1&\).*\(bar=2&\)/\1\2/' your_html.xml