我正在使用curl
抓取网站的 HTML。我只想获取前 20 行,并将其保存在外部文件中。我需要获取大约 10 个 URL,并希望将它们全部保存在同一个文件中。最好在结果上方显示每个文件的 URL。我想出的是:
curl http://example.com/url1 | head -20 && curl http://example.com/url2 | head -20 > 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
试试这个(bash):
{ curl http://example.com/url1 | head -20 \
&& curl http://example.com/url2 | head -20; } > exportfile