卷曲多个文件并将输出保存在一个文件中

卷曲多个文件并将输出保存在一个文件中

我正在使用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

相关内容