2013-01-17 83 views
0

我想刪除所有html標記,但保留
E.G. <a href="http://www.domain.com/">Link Title</a>SED刪除除鏈接以外的所有HTML標記

到目前爲止,這對我的作品除了它刪除</a>部分。

sed -e 's/<[^">]*>//g' 

我想知道是否有更好的方法來做到這一點。

+1

鏈接是不帶屬性的唯一標籤。 –

+0

是的我知道,但這是我所需要的;-) – Tux

回答

4

基本上你寫的是刪除<Stuff>的任何塊,其中Stuff沒有任何雙引號。例如,如果有HTML像一個完全有效位:

<a href='http://www.domain.com/'>Link Title</a> 

,甚至一些奇怪的HTML,如:

<a href=http://www.domain.com/>Link Title</a> 

它不會爲你工作。

正則表達式被認爲是一種非常糟糕的處理HTML的方法,除非您確切知道您可能處理的所有變體的範圍。

先閱讀this viewpoint

我可以建議是這樣的:

sed -e 's/<[^a>/!][^ >][^>]*>//g;s/<\/[^a>][^>]*>//g' 
+0

完美的SED規則謝謝你dlamblin。這有效地移除了所有的html標籤並且只保留鏈接。 – Tux

+0

@Tux不客氣。如果您在任何HTML運行這個包含'''''

'''或'',你打破它......你買它。 :) – dlamblin

+0

大聲笑這一點,我不希望任何標籤有或沒有屬性,但只有簡單的標籤。這正是我想要的。謝謝=) – Tux