Sed

Sed如何在兩個標籤之間提取文本但包括它

  • December 2, 2019

我試圖弄清楚為什麼這個命令對我不起作用:

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列印行與行之間的所有行pattern1pattern2包括帶模式的行)。

問題也可以解決sed,但這取決於somestupidstuff內容(例如,在所有情況下是否都相同等)

引用自:https://unix.stackexchange.com/questions/555190