我试图找出为什么这个命令对我不起作用:
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 与pattern1
line with之间的所有行pattern2
(包括带有图案的行)。
问题sed
也可能得到解决,但这取决于somestupidstuff
内容(例如是否在所有情况下都相同等)