2016-09-23 3 views
-1

Ich möchte eine Binärdatei von https://github.com/sschwartzman/newrelic-unix-plugin herunterladen. aber die URL wird zu einer anderen Adresse umleiten, also benutze ich das awk um es zu parsen. z.B.Wie verwendet man awk um URLs zu parsen und an curl zu übergeben, um es herunterzuladen?

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

Und das Ergebnis ist wie erwartet, z.B.

% 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 

Die reale Adresse wird analysiert. also möchte ich nur curl verwenden, um es herunterzuladen. aber ich habe immer versagt. Mein os ist osx EI Capitan (ich habe nicht 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}' 

Jeder Kommentar wird sehr geschätzt.

p.s. Ich habe versucht, die binäre directily durch curl herunterladen, aber immer noch fehlgeschlagen. Die heruntergeladene Datei hatte die falsche Größe und den falschen Inhalt.

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

In Ihrem zweiten zum letzten Beispiel können Sie nicht geben Sie einfach die Worte „curl -O“ in Ihrem awk Skript und erwarten, dass es funktioniert, und es ist nicht zu empfehlen Programme von "inside" awk ausführen (obwohl Sie können). Du bist das letzte Beispiel scheint am wahrscheinlichsten zu sein, aber hast du versucht 'curl -O outFile.tar.gz https: // ....'? Viel Glück. – shellter

Antwort

5

curl hat -L Schalter, der Umleitung verarbeiten kann.

So sollte diese Arbeit:

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

Ja, mit Ihrem Befehl kann ich die gz-Datei herunterladen, aber ich habe einen Fehler wie "curl: (6) Host konnte nicht aufgelöst werden: newrelic_unix_plugin.tar.gz" und der Dateiname ist "newrelic_unix_plugin.tar.gz? Row = wahr". Ich muss es in eine tar.gz-Datei umbenennen und extrahieren. Wie behebt man das Namensproblem? Danke. – Orionpax

+1

Sollte '-o' anstelle von '-O' – Orionpax

+0

@Orionpax verwenden, haben Sie ja Recht. Danke für die Nachricht. – pavnik

Verwandte Themen