将wget spider输出格式化为仅包含成功的URL

时间:2017-10-10 14:54:05

标签: shell awk sed scripting wget

我正在使用类似这样的bash shell脚本运行wget:

input=$1

#iterate input text file line by line and run following on each line:

wget -a links.log -nv --spider line_n_url

问题是输出有很多404错误,甚至确实存在的url的格式如下:

2017-10-10 11:35:46 URL: http://someurl.com/somefile.ext 200 OK

有没有办法格式化wget写入的输出或轻松将其排序?

另外一个问题是.ext是三种可能使匹配更难的类型。

我之后的每个现有网址都在其自己的行中,没有时间戳,URL:200 OK

http://someurl.com/somefile.ext
http://someurl.com/somefile2.ex2
http://someurl.com/somefile3.exp

感谢。

1 个答案:

答案 0 :(得分:3)

根据我的理解,您尝试仅过滤200 OK条消息。您应该在这里查看 awk ,这样您就可以在bash脚本中执行以下操作:

$ wget -a links.log -nv --spider line_n_url 2>&1 | awk '/200 OK/{print $4}'
http://someurl.com/somefile.ext

如果你想要独特的网址,你可以这样做:

awk '/200 OK/{print $4}' | sort | uniq

或:

awk '/200 OK/{a[$4]++}END{for (i in a) print i}'

重要提示:您必须将stderr重定向到stdout,如下所示:

$ wget -nv --spider http://google.com 2>&1 | awk '/200 OK/{print $4}'
http://www.google.nl/?gfe_rd=cr&dcr=0&ei=qgHdWa2MEqTVXsONudgM