2012-02-24 64 views
2

我有以下正則表達式在sed中工作,但我想保留一個值。我想保留錨文本值。在這種情況下,它是一個3.現在,下面將輸出[]任何地方有一個錨標記與HREF有一個英鎊符號。我希望它是[3]而不是[]。這個數字是動態的,所以在這種情況下它是3,但每次都會有所不同。無論如何,要獲得該數字,然後在正則表達式中回憶它?在正則表達式中調用值

echo '<a href="#anchor3">3</a>' | sed 's:<a href="#.*>[0-9]</a>:[]:g' 

回答

2

您必須使用捕獲括號和反向引用。

捕獲括號只是關於您希望保留的模式部分的括號。然後,您可以通過使用\1(對於第一套括號),\2叫他們回來更換等

echo '<a href="#anchor3">3</a>' | sed -r 's:<a href="#.*>([0-9])</a>:[\1]:g' 

# returns '[3]' 
+0

我得到一個錯誤...的sed:1:「S: user983223 2012-02-24 05:17:00

+0

我使用MacPorts安裝了ssed,並將sed更改爲ssed,並且使用上面的命令完美工作。非常感謝。 – user983223 2012-02-24 05:27:27

+0

嗯 - 我在一個bash shell的linux上。 '-r'表示啓用擴展正則表達式(即我可以執行'。+([0-9])'而不是'。+ + \([0-9] \)'。但是,我不我認爲你可以在不使用'-r'開關的情況下使用反向引用,我必須進行調查 – 2012-02-24 05:29:20

相關問題