скрутить несколько файлов и сохранить вывод в один файл

скрутить несколько файлов и сохранить вывод в один файл

Я использую curlдля захвата HTML веб-сайта. Я хочу захватить только первые 20 строк и сохранить их во внешнем файле. Мне нужно захватить около 10 URL-адресов, и я хочу сохранить их все в одном файле. Желательно с URL-адресом каждого файла над результатами. Вот что у меня получилось:

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

Однако это приводит к двум проблемам:

  • Это сохраняет только последнюю страницу (и если я поставлю > exportfile после каждого оператора, он перезапишет файл
  • Это не сохраняет фактическую команду в файле.

Есть ли способ сделать так, как я задумал?

решение1

Вы можете сохранить все свои URL-адреса в файле (скажем urls.txt, по одному в строке), а затем перебрать их в своем скрипте:

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

Одной из важных вещей является использование >>для добавления. >перезаписи.

решение2

Попробуйте это (баш):

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

Связанный контент