我正在使用类似这样的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
感谢。
答案 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