我需要使用sed命令從bash腳本中刪除所有標籤。 我試着用這個Sed從html文件中刪除標籤
sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1
和蒙山這個
sed -r 's/[\<][\/]?[.]*[\/]?[\\]?[\>]//g' $1
但我還是錯過了什麼,有什麼建議?
我需要使用sed命令從bash腳本中刪除所有標籤。 我試着用這個Sed從html文件中刪除標籤
sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1
和蒙山這個
sed -r 's/[\<][\/]?[.]*[\/]?[\\]?[\>]//g' $1
但我還是錯過了什麼,有什麼建議?
您可以使用許多HTML to text converters之一,使用Perl的正則表達式,如果可能的<.+?>
或者如果它必須是sed
使用<[^>]*>
sed -e 's/<[^>]*>//g' file.html
如果沒有空間錯誤,請使用HTML解析器來代替。 例如當一個元素分爲兩行時
<div
>Lorem ipsum</div>
這個正則表達式不起作用。
這個正則表達式包括三個部分<
,[^>]*
,>
<
*
,這是不閉合>
[...]
是一個character class,當它以^
開頭時尋找字符不在類>
更簡單的正則表達式<.*>
將無法正常工作,因爲它搜索最長可能的匹配,即在輸入行的最後收盤>
。例如,當您在輸入行有一個以上的標籤
<name>Olaf</name> answers questions.
將導致
回答問題。
,而不是
奧拉夫回答問題。
另請參閱Repetition with Star and Plus,特別是章節Watch Out for The Greediness!及以下,爲詳細解釋。
工程就像一個魅力..雖然我吸吮sed,所以你可以請解釋<[^>] *>位? –
'[^>]'是一個匹配任何字符的字符類,除了'>'和'*'表示重複匹配零次或多次。否則,'<.*>'將從第一個'<'到最後一個'>'匹配,通常跨越多個標籤。 – tripleee
這是我最喜歡的關於HTML和正則表達式的答案;-) http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –
我完美無缺知道它,但這是作業:-( – michste93
我的學校時間很久以前,但我認爲作業並不一定是一個完美的答案,它也是要表現出一些努力,並有勇氣說,那就是所有我想出來的。:-) –