enrolle varios archivos y guarde el resultado en un solo archivo

enrolle varios archivos y guarde el resultado en un solo archivo

Lo estoy usando curlpara capturar el HTML de un sitio web. Solo quiero tomar las primeras 20 líneas y guardarlas en un archivo externo. Necesito obtener unas 10 URL y quiero guardarlas todas en el mismo archivo. Preferiblemente con la URL de cada archivo encima de los resultados. Lo que se me ocurrió es:

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

Sin embargo, esto genera dos problemas:

  • Esto solo guarda la última página (y si pongo > exportfile después de cada declaración, sobrescribe el archivo
  • Esto no guarda el comando real en el archivo.

¿Alguna forma de hacer que esto funcione como pretendo?

Respuesta1

Puede guardar todas sus URL en un archivo (por ejemplo urls.txt, una por línea) y luego recorrerlas en su secuencia de comandos:

#! /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

Una de las cosas importantes es usar >>para agregar. >sobrescribe.

Respuesta2

Prueba esto (bash):

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

información relacionada