複数のファイルを curl し、出力を 1 つのファイルに保存します。

複数のファイルを curl し、出力を 1 つのファイルに保存します。

私はcurl、Web サイトの HTML を取得するために使用しています。最初の 20 行だけを取得して、これを外部ファイルに保存したいと考えています。約 10 個の URL を取得し、すべてを同じファイルに保存する必要があります。できれば、結果の上に各ファイルの URL を表示したいです。私が思いついたのは次の方法です。

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

ただし、これにより 2 つの問題が発生します。

  • これは最新のページのみを保存します(そして、すべてのステートメントの後に> exportfileを置くと、ファイルが上書きされます
  • 実際のコマンドはファイルに保存されません

これを意図したとおりに動作させる方法はありますか?

答え1

すべての URL をファイルに保存し (たとえばurls.txt、1 行に 1 つずつ)、スクリプト内でそれらをループ処理することができます。

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

重要なことの 1 つは、>>追加に使用することです。>上書きします。

答え2

これを試してください(bash):

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

関連情報