如何使用awk解析url并通过curl下载它?

问题描述:

我想从https://github.com/sschwartzman/newrelic-unix-plugin下载二进制文件。但url会重定向到另一个地址,所以我使用awk来解析它。例如如何使用awk解析url并通过curl下载它?

curl -I https://github.com/sschwartzman/newrelic-unix-plugin/blob/master/dist/newrelic_unix_plugin.tar.gz\?raw\=true | awk '/Location:/ {print $2}' 

结果如我所料,例如,

% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- 0:00:01 --:--:--  0 
https://github.com/sschwartzman/newrelic-unix-plugin/raw/master/dist/newrelic_unix_plugin.tar.gz 

实际地址被解析。所以我只是想用curl来下载它。但我总是失败。 我的os是osx EI Capitan(我没有wget)。

curl -I https://github.com/sschwartzman/newrelic-unix-plugin/blob/master/dist/newrelic_unix_plugin.tar.gz\?raw\=true | awk '/Location:/ {curl -O $2}' 

任何意见将不胜感激。

p.s. 我试图通过curl下载二进制direclty,但仍然失败。下载的文件大小和内容不正确。

curl -O https://github.com/sschwartzman/newrelic-unix-plugin/raw/master/dist/newrelic_unix_plugin.tar.gz 
+0

在你第二次到最后一个例子,你不能只是在你的awk脚本输入单词“卷曲-O”,并期望它的工作,它不推荐从“内部”awk运行程序(尽管你可以)。你最后一个例子似乎最有可能成功,但你是否尝试'curl -O outFile.tar.gz https:// ....'?祝你好运。 – shellter

curl具有切换-L能够处理重定向。

所以,这应该工作:

curl -L https://github.com/sschwartzman/newrelic-unix-plugin/blob/master/dist/newrelic_unix_plugin.tar.gz\?raw\=true -o newrelic_unix_plugin.tar.gz 
+0

是的,用你的命令,我可以下载gz文件,但是我收到了一个错误,比如“curl:(6)Could not resolve host:newrelic_unix_plugin.tar.gz”,文件名是“newrelic_unix_plugin.tar.gz?raw =真正”。我必须将其重命名为tar.gz文件并提取。如何解决名称问题?谢谢。 – Orionpax

+1

应该用'-o'代替'-O' – Orionpax

+0

@Orionpax,是的,你是对的。感谢您的通知。 – pavnik