2016-09-23 68 views
-1

我想從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

回答

5

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