从html文件中提取超链接URL的shell脚本。

5633阅读 0评论2010-12-23 pagx
分类:WINDOWS

sed -n '/ html.txt | sed 's#]*\)>#--SYN--\1--FIN--#g; s///g' | \
sed 's/--SYN--//;' | \
sed "s#<[^>]*href=\([^a-zA-Z>]*http://[^ >]*\)[^>]*># @\1@#g; s/<[^>]*>//g; s/'//g; s/@/ /g" > url.txt


这里提取的是 中的
也就是
1、只匹配html的Tag为a的节点。
2、选择的是href的值。
3、href的值需要使用http://开头,就是说不支持相对路径。

写成sed脚本可以表示为:

# this script is use to dig href url from html file
s/<a \([^>]*\)>/--SYN--\1--FIN--/g;
s/[><]//g;
s/--FIN--/>/g;
s/--SYN--/</g;
s/^\(.*\)$/>\1</;
s/>[^<]*</></g;
s#<[^>]*href=[^a-zA-Z>]*\(http://[^ >]*\)[^>]*>#@\1@#g;
s/<[^>]*>//g;
s/@@/\
/g;
s/[><
'"@]//g;

/^ *$/d;


sed脚本2:

:a;
h;
s@^[^<]*<a\s*[^>]*\s*href\s*=\s*['"]*\(http://[^> "']*\)[^>]*>.*@\1@p;
g;
s@<[a-zA-Z/][a-zA-Z]*[^>]*>@@;
t a;
/<[a-zA-Z\/][a-zA-Z]*[^>]*$/{N; b a; };
d;


上一篇:分布式版本管理的选择。
下一篇:git 的冲突处理(仅仅个人猜测,供参考)。