我在gawk中使用match()函数从HTML文件中获取链接..正则表达式是这样的:
match($0, /(<a href=\")([^\"]+)/, arr)
我似乎无法在最后使用“/ g”选项来获得每行多个匹配项?
答案 0 :(得分:5)
这是正确的。 AWK正则表达式没有标志
此外,没有内置支持让match
查找第二次或以后的比赛
只有gsub
和gensub
函数具有此功能。
我会尝试这样的事情:
gensub(/.*<a href=\"([^\"]+)/, "\1%", "g")
last = split($0, "%", arr)
delete arr[last]
其中%
是一个您可以保证在输入中找不到的字符串。
答案 1 :(得分:1)
文本模式浏览器lynx可能是收集URL的更好工具。它的-dump
标志将格式化输出写入标准输出。最后,您将找到该页面上每个可见和隐藏链接的编号列表。 (或文件。它接受URL或文件名作为参数。)
$ lynx -dump http://www.stackoverflow.com
[snip]
References
Visible links
1. http://stackoverflow.com/opensearch.xml
2. http://stackoverflow.com/feeds
3. http://stackexchange.com/
4. http://stackoverflow.com/users/login
5. http://careers.stackoverflow.com/
6. http://chat.stackoverflow.com/
[snip]
676. http://creativecommons.org/licenses/by-sa/3.0/
677. http://blog.stackoverflow.com/2009/06/attribution-required/
Hidden links:
678. http://www.peer1.com/stackoverflow
679. http://creativecommons.org/licenses/by-sa/3.0/