1

我尝试从我的 xml 文件中删除所有出现的单词。我想删除的模式如下所示:

& lt;foo_bar>300</foo_bar& gt;

我不熟悉 sed,但我知道使用它是可行的。我尝试了类似的东西:

sed 's^&lt[foo_bar]>$g' myfile.xml

或者

sed 's/^&lt[foo_bar]>$//' myfile.xml

两者都失败并显示错误消息。那么你能帮我解决这个问题吗?操作系统是 Solaris 10,所以最有可能的标准版本是 sed 安装的,而不是 GNU 版本。请忽略表达式中 & 后的空格。实际表达中没有空格。

谢谢

4

2 回答 2

1

至少,您使用字符类的方式[foo_bar]是错误的。[foo_bar]只能匹配f,o,b,a,r,_一次。而且您似乎没有尝试匹配/. 您拥有的第一个表达式缺少正则表达式分隔符。sed 将假定您正在^用作分隔符,但它缺少相应的分隔符,如s^find^replace^g.

这似乎有效:

sed 's!<foo_bar>[^&]*</foo_bar>!!g' input
于 2013-03-05T08:00:10.740 回答
0

这可能对您有用(GNU sed):

sed -r 's/&\s*lt;(foo_bar&)gt;[0-9]+<\/\1\s*gt;//g' file
于 2013-03-05T08:35:08.080 回答