Sed
Sed如何在兩個標籤之間提取文本但包括它
我試圖弄清楚為什麼這個命令對我不起作用:
sed -n -e '/<a href=\(.*\)>/,/<\/a>/p' text.html
在 text.html 上,我們有類似…
<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>
所需的輸出是:
<a href='teste'> teste </a>
但我得到的是:
<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>
也許我沒有完全理解正則表達式。
它更容易
grep
用於您的案例。例如這樣:grep -o '<a href=[^<]*<\/a>'
如果有你可能想試試這個
<
:<a href>..</a>
grep -o '<a href=.*<\/a>'
但是請注意,對於
<a href=...</a>
在同一字元串中多次出現的字元串,它可能會返回您不期望的數據。
sed
對您不起作用,因為/pattern1/,/pattern2/p
指示sed
列印行與行之間的所有行pattern1
(pattern2
包括帶模式的行)。問題也可以解決
sed
,但這取決於somestupidstuff
內容(例如,在所有情況下是否都相同等)