如何从 CSV 获取图像,从字段附加 url 和文件名?

如何从 CSV 获取图像,从字段附加 url 和文件名?

我有一个包含 4 个字段(id1、id2、id3、文件名)的 CSV,如下所示:

2,2314,78,/image/1289.jpg
1,19825,179,/image/01288.jpg
2,2585,2281,/image/01287.jpg
3,35879,82,/image/01286.jpg

图像有一个通用的 URL 端点,例如

http://example.com/assets/?mediafile=

最后一列是图像 URL 的唯一部分。

我正在尝试下载每个图像,每个图像的名称基于前 3 个字段:

id1 始终是 1 位数字
id2 实际上是 5 位数字,前面有零(因此 2314 需要变成 02314)
id3 实际上是 4 位数字(78 变成 0078),

所以总共有 10 位数字的代码。所以第一个图像名称应该是 2023140078.jpg

如果我要手动下载单个文件,我会这样做:

wget -O 2023140078.jpg http://example.com/assets/?mediafile=/image/1289.jpg

另外,如果我可以将某种状态或错误代码写回该行或写入错误日志,那就太好了。

答案1

awk -F, '{printf("%d%.5d%.4d %s\n",$1,$2,$3,$4)}' input.csv | while read newfile filename 
do 
wget -O "${newfile}.jpg" http://example.com/assets/?mediafile=${filename} 
done

答案2

您可以将 设为IFS逗号并使用循环while读取使用该文件作为输入的 4 个变量:

IFS=','
while read c1 c2 c3 c4; do
  wget -O "$(printf "%d%05d%04d.jpg" "$c1" "$c2" "$c3")" "http://example.com/assets/?mediafile=${c4}"
done < file.txt

相关内容