0

我正在使用 wget 从输入文件中读取一批 url 并将所有内容下载到单个输出文件中,我想在其下载内容之前附加每个 url,有人知道该怎么做吗?

谢谢!

4

1 回答 1

0

afaik wget 不直接支持您设想的用例。但是,使用标准工具,您可以模拟此功能。

我们将按以下步骤进行:

  • wget启用日志记录的调用
  • sed处理执行下面详述的脚本的日志
  • 将转换结果作为 shell/批处理脚本执行

约定:使用以下文件名:

  • wgetin.txt:带有要使用 wget 获取的 url 的文件
  • wgetout.sed: sed 脚本
  • wgetout.final: 最终结果
  • wgetass.sh/.cmd: shell/batch 脚本来组装下载的文件编织在 url 数据中
  • wget.log: wget 调用的日志文件

Linux

sed 脚本(Linux):

# delete lines _not_ matching the regex
/^\(Saving to: .\|--[0-9: \-]\+--  \)/! { d; }

# turn remaining content into something else
s/^--[0-9: \-]\+--  \(.*\)$/echo '\1\n' >>wgetout.final/
s/^Saving to: .\(.*\).$/cat '\1' >>wgetout.final/

命令行(Linux):

rm wgetout.final | rm wgetass.sh | wget -i wgetin.txt -o wget.log | sed -f wgetout.sed -r  wget.log >wgetass.sh | chmod 755 wgetass.sh | ./wgetass.sh

视窗

Windows 批处理脚本的语法略有不同。当然,wget 和 sed 的 windows 端口必须先安装。

sed 脚本(Windows):

# delete lines _not_ matching the regex
/^\(Saving to: .\|--[0-9: \-]\+--  \)/! { d; }

# turn remaining content into something else
s/^--[0-9: \-]\+--  \(.*\)$/echo "\1" >>wgetout.final/
s/^Saving to: .\(.*\).$/type "\1" >>wgetout.final/

命令行(Windows):

del wgetout.final && del wgetass.cmd && wget -i wgetin.txt -o wget.log && sed -f wgetout.sed -r  wget.log >wgetass.cmd && wgetass.cmd
于 2013-09-11T17:03:01.500 回答