私は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