我的html页面有很多行,其中一行是:
var premium_download_link = 'http://www.someurl.com/';
如何在html页面中找到该行并从行中提取http://www.someurl.com?
答案 0 :(得分:3)
echo "var premium_download_link = 'http://www.someurl.com/'" | awk '{print substr ($4,2,23)}'
答案 1 :(得分: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
的变量中。
答案 2 :(得分:2)
使用awk:
awk -F "'" '{ for (f=1; f<=(NF-1)/2; f++) print $(f*2) }' $1
-F "'"
将引用'
定义为给定输入的分隔符。
答案 3 :(得分:2)
使用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 }'
答案 4 :(得分:1)
grep -Po "(?<=premium_download_link = ')[^']+"