2

我需要提取两个短语之间的所有网址。

4

3 回答 3

1
sed "s:.*Today's Racing\(.*\)Tomorrow's Racing:\1:; s:a href[^\"]*.\([^\"]*\):\n=\:\1\n:g ; s:\n[^=][^\n]*::g ; :r s:^[^=][^\n]*:: ; s:^\n::; tr " FILE

You can also save this script into a file links.sed

s:.*Today's Racing\(.*\)Tomorrow's Racing:\1:
s:a href[^\"]*.\([^\"]*\):\n=\:\1\n:g
s:\n[^=][^\n]*::g
:r
s:^[^=][^\n]*::
s:^\n::
tr

and run it

sed -i -f links.sed FILE
于 2012-08-05T21:07:32.930 回答
1
tr '<' '\n' < index.html | csplit -n 2 -s - "%Today's Racing%"
csplit -n 2 -s -f /tmp/t2 /tmp/t100 "/Tomorrow's Racing/"
grep href /tmp/t200 | cut -f 2 -d '"' > url-list.txt
rm /tmp/t100 /tmp/t200 /tmp/t201

注意:这是非常不一般的。它不处理注释,只处理单行href,只处理双引号中的href,以及各种其他限制,例如它会找到所有hrefs,而不仅仅是那些属于a标签的s。

但它可能适用于你正在做的事情。

还有其他工具可以一次性完成,但这很有效。

于 2012-08-05T20:27:27.710 回答
0

只有 sed、grep 和 cut 实用程序:

sed -e 's/</\n/g' index.html |\
sed -n "/Today's Racing/,/Tomorrow's Racing/p" |\
grep href |\
cut -d' ' -f2
于 2012-08-06T07:34:03.753 回答