필드에 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

관련 정보