Как Wget изображения из CSV, добавлять URL-адрес и имена файлов из полей?

У меня есть CSV с 4 полями (id1, id2, id3, filename) следующим образом:

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-адреса изображения.

Я пытаюсь загрузить каждое изображение, и имя каждого изображения основано на первых трех полях:

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 

Также, если бы я мог написать какой-то статус или код ошибки в строку или написать журнал ошибок, было бы здорово.

 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 

Вы можете установить 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