2013-09-30 93 views
1

例如说我有这样的一个文件中:正则表达式-e

<example id="1">some text</example> 
<example id="2">some other text</example> 
<example id="3">random words</example> 

我想用perl -pi -e删除<example</example>,我可以很容易做到,但我不知道如何我可以做到这一点,也删除这两个标签内的一切。

我目前可以得到由这样摆脱<example</example>的:

perl -pi -e 's/<example//g' /file.xml; perl -pi -e 's/<\/example>//g' /file.xml; 

但很明显,这仍然留下文字的其余部分。

任何想法?

+1

要删除文本的全部? 'perl -pi -e's /.+//'/ file.xml' – Borodin

+1

结束标记总是与开始标记在同一行上? – ysth

回答

4

这应该这样做:

perl -pi'~' -e "s/<example.*?>.+?<\/example>//g" file.xml 
+0

工作过!谢谢! :-) –

+0

是否真的有必要引用波浪号?不要这样想。但用单引号而不是双引号引用替换表达式是有道理的。 – ceving

+1

你好,我想你是在Linux上,而不是在Windows上 – psxls