我有一个包含许多链接的HTML文件。我需要从页面中提取所有mp4
链接,并使用sed / awk / grep将链接保存到另一个文件。
该页面可在page.html
离线使用。
示例:页面包含:
<a title="Download this file..." target="_blank" href="http://webaddress.domain.org/videos/sometext/file_name_12.mp4">
所以输出文件应该有:
http://webaddress.domain.org/videos/sometext/file_name_12.mp4
同样,该页面可能包含几个mp4链接。
答案 0 :(得分:4)
您可以使用grep
选项PCRE
尝试前瞻和后面的断言:
grep -oP '(?<=href=")[^"]+.mp4(?=")' file
<强>测试强>
$ cat file
<a title="Download this file..." target="_blank" href="http://webaddress.domain.org/videos/sometext/file_name_12.mp4">
$ grep -oP '(?<=href=")[^"]+.mp4(?=")' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4
答案 1 :(得分:2)
$ cat foo.html
<a href="http://example.com/foo.mp4">foo</a>
$ tr '"' '\n' < foo.html | grep http | grep '\.mp4$' >> mp4s
$ cat mp4s
http://example.com/foo.mp4
这是做什么的:
tr
将所有双引号"
转换为换行符\n
grep
所有包含http
grep
在行尾.mp4
的所有行
醇>
答案 2 :(得分:1)
以下是使用url
从长字符串中获取awk
的好方法:
awk -F"http://" '/mp4/ {split($2,a,"\"");print FS a[1]}' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4
使用gnu awk
awk -v RS="http://" -F\" 'NR>1 && /mp4/ {print RS $1}' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4
答案 3 :(得分:1)
使用sed
:
sed -n 's/.*\(http[^>]\+\.mp4\).*/\1/p' your_offline.html > allmp4_links.txt