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

2

Estou usando curl para capturar o HTML de um website. Eu quero apenas pegar as primeiras 20 linhas e salve isso em um arquivo externo. Eu preciso pegar cerca de 10 URLs, e quero salvar todos eles no mesmo arquivo. De preferência, com o 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 só salva a página mais recente (e se eu colocar > exportfile após cada instrução, ela substitui o arquivo
  • Isso não salva o comando real no arquivo

Qualquer maneira de fazer isso funcionar como pretendo?

    
por user 30.03.2012 / 15:29

2 respostas

7

Você pode salvar todos os seus URLs em um arquivo (digamos urls.txt , um por linha) e, em seguida, fazer um loop sobre eles no 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. > sobrescreve.

    
por 30.03.2012 / 15:37
1

Tente isso (bash):

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

Tags