curl vários arquivos e salve a saída em um arquivo

curl vários arquivos e salve a saída em um arquivo

Estou usando curlpara 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

informação relacionada