Estou usando curl
para pegar o HTML de um site. Quero pegar apenas as primeiras 20 linhas e salvá-las em um arquivo externo. Preciso pegar cerca de 10 URLs e quero salvar todos eles no mesmo arquivo. De preferência com a URL de cada arquivo acima dos resultados. O que eu descobri é:
curl http://example.com/url1 | head -20 && curl http://example.com/url2 | head -20 > exportfile
No entanto, isso gera dois problemas:
- Isso salva apenas a página mais recente (e se eu colocar > exportfile após cada instrução, ele sobrescreve o arquivo
- Isso não salva o comando real no arquivo
Alguma maneira de fazer isso funcionar como pretendo?
Responder1
Você pode salvar todos os seus URLs em um arquivo (digamos urls.txt
, um por linha) e, em seguida, fazer um loop sobre eles em seu script:
#! /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
Uma das coisas importantes é usar >>
para anexar. >
substitui.
Responder2
Tente isto (bash):
{ curl http://example.com/url1 | head -20 \
&& curl http://example.com/url2 | head -20; } > exportfile