複数のファイルをカリングして出力を1つのファイルに保存する

複数のファイルをカリングして出力を1つのファイルに保存する

を使用してウェブサイトのHTMLをスクラップしていますcurl。最初の20行をインポートして外部ファイルに保存したいと思います。約10個のURLをインポートする必要があり、それらをすべて同じファイルに保存したいと思います。結果の上に各ファイルのURLを表示することをお勧めします。私が思いついたのは次のとおりです。

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

しかし、これは2つの問題を引き起こします。

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

私が望むようにこれを行う方法はありますか?

答え1

すべてのURLをファイルに保存し(たとえば、urls.txt1行に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

これを試してみてください:

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

関連情報