我会去链接,但有所不同。如果在名为strings.txt的文本文件中有类似您的文本片段,则可以执行以下操作:
grep http ./strings.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)/\1/g' | grep IWANTthis | sort -u
说明:
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)/\1/g'
=> will preserve string from ^http until first space or < (the latter in hope if
grep IWANTthis => will take only urls containing your text of your interest; you can omit this.
sort -u => will sort the list and remove duplicates from it
由于网址可能无法正常工作,您可以使用您感兴趣的网址进行其他错误检查。例如wget -p URL -O /dev/null
-如果URL不可用,它将打印完全不同的错误代码,因此您可以设置一个循环来处理链接列表并输出其有效性状态。
如果最终要从html文件中提取链接,则sed
在特殊情况下可能会遇到一些麻烦。正如在一个有趣的(帖子)中所建议的那样,您可能已经看过了-最好不要使用regexps而是html解析器引擎。一种此类易于使用的解析器是纯文本浏览器lynx
(可在任何Linux上使用)。这使您可以立即转储文件中所有链接的列表,然后只需使用grep提取所需的URL。
lynx -dump -listonly myhtmlfile.html | grep IWANTthisString | sort -u
但是,这不适用于大多数损坏的html文件或带有链接的文本片段。