フィールドにURLとファイル名を追加してCSVから画像を取得するには?

フィールドにURLとファイル名を追加してCSVから画像を取得するには?

次の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は実際には0が付いている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

関連情報