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>

也许我没有完全理解正则表达式。

答案1

grep对于您的情况来说使用起来要容易得多。例如这样:

grep -o '<a href=[^<]*<\/a>'

如果您可能想尝试以下方法<<a href>..</a>

grep -o '<a href=.*<\/a>'

<a href=...</a>但请注意,对于同一字符串中多次出现的字符串,它可能会返回您不期望的数据。

sed不适合你,因为/pattern1/,/pattern2/p指示sed打印 line 与pattern1line with之间的所有行pattern2(包括带有图案的行)。

问题sed也可能得到解决,但这取决于somestupidstuff内容(例如是否在所有情况下都相同等)

相关内容