我正在使用wget从输入文件中读取一批url并将所有内容下载到单个输出文件中,并且我想在下载内容之前附加每个url,任何人都知道如何操作?
谢谢!
答案 0 :(得分:0)
afaik wget不直接支持您正在构想的用例。但是,使用标准工具,您可以模拟此功能。
我们将按如下方式进行:
wget
sed
处理执行下面详述的脚本的日志约定:使用以下文件名:
wgetin.txt
:包含要使用wget wgetout.sed
:sed脚本wgetout.final
:最终结果wgetass.sh/.cmd
:shell / batch脚本,用于汇编在url数据中编织的下载文件wget.log
:wget调用的日志文件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