2010-04-05 105 views
2
sed 's/^\(\h*\)\(.*\)$/\1<!-- \2 -->/' web.xml 

我認爲這應該採取這種XML:正則表達式:反向引用

<a> 
    <d> 
    bla 
    </d> 
</a> 

,把它變成:

<!-- <a> --> 
    <!-- <d> --> 
    <!-- bla --> 
    <!-- </d> --> 
<!-- </a> --> 

但什麼是做的是這樣的:

<!-- <a> --> 
<!-- <d> --> 
<!--  bla --> 
<!-- </d> --> 
<!-- </a> --> 

回答

1

使用[ \t]*代替\h*,就像這樣:

sed 's/^\([ \t]*\)\(.*\)$/\1<!-- \2 -->/' web.xml 

Here的sed中的逃跑的列表(元)字符。

+0

嗯,你是對的。這工作。爲什麼沒有工作?它不被sed支持嗎? – sixtyfootersdude 2010-04-05 16:35:35

+0

也許只是在perl – sixtyfootersdude 2010-04-05 16:36:15

+0

是的,sed的正則表達式支持是非常基本的。大多數正則表達式引擎支持元字符'\ s'和類'[:space:]'爲空白。 – 2010-04-05 16:39:05

相關問題