Mehrere Dateien curlen und die Ausgabe in einer Datei speichern

Mehrere Dateien curlen und die Ausgabe in einer Datei speichern

Ich verwende es, curlum das HTML einer Website abzurufen. Ich möchte nur die ersten 20 Zeilen abrufen und diese in einer externen Datei speichern. Ich muss ungefähr 10 URLs abrufen und möchte sie alle in derselben Datei speichern. Vorzugsweise mit der URL jeder Datei über den Ergebnissen. Was mir eingefallen ist, ist:

curl http://example.com/url1 | head -20 && curl http://example.com/url2 | head -20 > exportfile

Dies führt jedoch zu zwei Problemen:

  • Dadurch wird nur die letzte Seite gespeichert (und wenn ich nach jeder Anweisung > exportfile einfüge, wird die Datei überschrieben
  • Dadurch wird der eigentliche Befehl nicht in der Datei gespeichert.

Gibt es eine Möglichkeit, dies wie vorgesehen zum Laufen zu bringen?

Antwort1

Sie können alle Ihre URLs in einer Datei speichern (sagen wir urls.txt, eine pro Zeile) und sie dann in Ihrem Skript durchlaufen:

#! /bin/bash

# optional, clean up before starting
rm exportfile

while read url ; do
   echo "URL: $url"       >> exportfile
   curl "$url" | head -20 >> exportfile
done < urls.txt

Eines der wichtigsten Dinge ist die Verwendung >>zum Anhängen >und Überschreiben.

Antwort2

Versuchen Sie Folgendes (bash):

{ curl http://example.com/url1 | head -20 \
  && curl http://example.com/url2 | head -20; } > exportfile

verwandte Informationen