我有很多行的html页面,其中一行是:
var premium_download_link = 'http://www.someurl.com/';
如何在 html 页面中找到该行并从该行中提取http://www.someurl.com?
我有很多行的html页面,其中一行是:
var premium_download_link = 'http://www.someurl.com/';
如何在 html 页面中找到该行并从该行中提取http://www.someurl.com?
echo "var premium_download_link = 'http://www.someurl.com/'" | awk '{print substr ($4,2,23)}'
您可以通过awk
定义字段分隔符变量来提取特定的字段值。
例如,以下应该工作 -
$ echo "var premium_download_link = 'http://www.someurl.com/';" |
awk -F"'" '{ print $2 }'
http://www.someurl.com/
但是,您的html
文件可能包含其他内容。因此,您可以在脚本前面添加一个正则表达式,以确保它仅在遇到特定行时运行。
例如 -
awk -F"'" '/premium_download_link/{ print $2 }'
使用sed
:
sed -n -e "s/.*var premium_download_link = '\([^']*\)';.*/\1/p"
该-n
标志禁止打印,除非我们使用p
. 因此只打印匹配(然后替换)的行。
编辑(基于 OP 评论):
要在 shell 变量中获取它,您可能需要以下内容:
url=$(wget -qO - "http://originalurl.com/" | sed -n -e "s/.*var premium_download_link = '\([^']*\)';.*/\1/p")
这会获取页面并运行它sed
。输出应该是 url,它存储在一个名为url
.
With awk :
awk -F "'" '{ for (f=1; f<=(NF-1)/2; f++) print $(f*2) }' $1
-F "'"
define the quote '
as the separator for given input.
grep -Po "(?<=premium_download_link = ')[^']+"