如何使用wget结合awk下载CSV文件第一列存储的URL资源?
问题原因
原命令执行失败的核心原因是:
wget默认不会从标准输入读取待下载的URL列表,管道传递的URL内容没有被wget识别到。
正确实现方案
方案1:使用wget内置的标准输入读取参数
直接给wget加-i -参数,指定从标准输入读取URL列表,这是最高效的方案:
awk -F ',' '{print $1}' test.csv | wget -i - -P download_dir
参数说明:
-i:指定存储URL列表的输入文件,后跟-代表取标准输入的内容-P download_dir:原有指定下载目录的参数保持不变即可
方案2:跳过CSV表头
如果你的test.csv第一行是表头不是实际URL,调整awk语句跳过第一行:
awk -F ',' 'NR>1 {print $1}' test.csv | wget -i - -P download_dir
方案3:处理带引号的CSV字段/含特殊字符的URL
如果CSV第一列的URL被双引号包裹,或者URL包含空格等特殊字符,可以先清理字段再用xargs逐行调用wget:
awk -F ',' '{gsub(/"/,"",$1); print $1}' test.csv | xargs -I {} wget {} -P download_dir
参数说明:
gsub(/"/,"",$1):把第一列的双引号全部替换为空xargs -I {}:将每一行输入内容替换到{}的位置,逐行执行wget命令
内容的提问来源于stack exchange,提问作者Hosein Basafa
相关产品推荐
相关产品推荐

