sed从模式中删除编号的内容

时间:2013-03-27 08:01:08

标签: regex sed

我有以下模式

<number>5645646546545656756756757</number>

我正在尝试删除该号码但无法使其正常工作。

sed 's/.*<number>[0-9]<\/number>.*/replace/g' xml.log

3 个答案:

答案 0 :(得分:3)

如果您要删除标签和号码:

sed 's@<number>[0-9]*</number>@replace@g' xml.log

如果您要删除号码:

sed 's@<number>[0-9]*</number>@<number></number>@g' xml.log

如果要进行就地替换(在文件中),请添加-i

sed -i 's@<number>[0-9]*</number>@replace@g' xml.log

答案 1 :(得分:0)

尝试类似:

echo '<number>5645646546545656756756757</number>' | sed 's/.*<number>\([0-9]*\)<\/number>.*/\1/g'

答案 2 :(得分:0)

如果您想删除数字或标签内的任何字符,您可以使用以下内容。所以它不仅仅考虑&lt; number&gt;和&lt; / number&gt;作为标签。

sed 's@\(<[^>]*>\)[^<]*\(<[^>]*>\)@\1\2@g'

删除最后一个if中的g,一行中出现一次。