Lo estoy usando curl
para 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