Ast*_*ron 4 regex scripting awk grep sed
我正在尝试解析下载的网页的来源,以获取链接列表.单行可以正常工作.这是我到目前为止所尝试的:
这似乎从一些页面名称中省略了部分URL.
$ cat file.html | grep -o -E '\b(([\w-]+://?|domain[.]org)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'|sort -ut/ -k3
Run Code Online (Sandbox Code Playgroud)
这将获取所有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
Run Code Online (Sandbox Code Playgroud)
如果您只解析类似<a>标签的内容,则可以像这样匹配href属性:
$ cat file.html | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | sort | uniq
Run Code Online (Sandbox Code Playgroud)
这将忽略锚,并保证你有独特的.这确实假设页面具有格式良好的(X)HTML,但您可以先将其传递给Tidy.