我需要一个 sh 脚本来从 html 文件中获取文本,然后使用该文件下载
wget website.com/link_123456789 -O 'testfile.txt'
该文件的全部内容位于此 pastebin
但你不需要所有这些,只需要重要的几行
<br>
<IFRAME style="max-width: 850px;" SRC="http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html" FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO width="100%" HEIGHT=450></IFRAME>
<br><br>
<p>
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
我需要文件中的文本。
是否有一个简单的答案可以与其他字符串一起使用?
答案1
使用awk
和多个分隔符-F
searchfor="vodlocker"
wget -q -O- http://pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/ {print $4}'
示例输出:
$ searchfor="vodlocker"; wget -q -O- http://pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/ {print $4}'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
答案2
grep
与 PCRE 一起使用( -P
):
grep -Po 'SRC="\K[^"]+(?=")' testfile.txt
和sed
:
sed -nr 's/.*SRC="([^"]+)".*/\1/p' testfile.txt
两者都采用所需的字符串,用双引号引起来,并SRC=
在前面加上。
例子:
% wget -q -O- http://pastebin.com/raw/VbrXHEYd | grep -Po 'SRC="\K[^"]+(?=")'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
% wget -q -O- http://pastebin.com/raw/VbrXHEYd | sed -nr 's/.*SRC="([^"]+)".*/\1/p'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
答案3
我刚刚发现小狗, 这很棒!
$ curl -s https://pastebin.com/raw/VbrXHEYd | pup 'iframe attr{src}'
结果
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
答案4
你也可以html2
使用sed
:
$ curl -s http://pastebin.com/raw/VbrXHEYd | html2 | sed '/iframe\/@src=/!d;s/^.*src=//'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html