Я использую 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