【发布时间】:2011-07-19 03:52:58
【问题描述】:
我正在尝试解析下载网页的来源以获取链接列表。单线就可以了。到目前为止,这是我尝试过的:
这似乎从某些页面名称中遗漏了部分 URL。
$ cat file.html | grep -o -E '\b(([\w-]+://?|domain[.]org)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'|sort -ut/ -k3
这会获取所有 URL,但我不想包含具有/是锚链接的链接。我也希望能够指定 domain.org/folder/:
$ awk 'BEGIN{
RS="</a>"
IGNORECASE=1
}
{
for(o=1;o<=NF;o++){
if ( $o ~ /href/){
gsub(/.*href=\042/,"",$o)
gsub(/\042.*/,"",$o)
print $(o)
}
}
}' file.html
【问题讨论】:
-
grep -E不理解非捕获子模式或\w在字符类中转义。您需要使用grep -P。 -
@Dennis Williamson:现在返回的结果与第二个示例类似,但我需要能够清除锚链接并指定 domain.com/folder
标签: regex scripting sed awk grep