Então eu tenho tentado fazer o script de codificação de imagem, o que eu consegui trabalhando com 3 colunas, mas não com 4. Dados de exemplo são apenas com 4 linhas. Os dados terminados serão de 100-1000 linhas ... Delimiter on csv está definido como | por causa de scripts.
Então, o princípio é bem simples.
$ ./script.sh Data.csv Output.csv
Procuramos arquivos de imagem na raiz contada pelo Data.csv e, em seguida, codificamo-los com base64 e exportamos para output.csv.
3 dados da coluna.csv
item1 photoname1 filename1
item1 photoname2 filename2
item1 photoname3 filename3
item1 photoname4 filename4
Output.csv
item1 photoname1 base64_encoded_file1
item1 photoname2 base64_encoded_file2
item1 photoname3 base64_encoded_file3
item1 photoname4 base64_encoded_file4
O código abaixo funciona com 3 colunas. Primeiras 2 colunas são copiadas diretamente para o novo arquivo, em seguida, a terceira coluna é usada para pesquisar o arquivo de imagem por célula na pasta atual e, em seguida, codificado para o formato base64 e salvo para output.csv
echo \"id\",\"image/name\",\"images/image\" > $2
while IFS="|" read f1 f2 f3; do
echo -n $f1,\"$f2\", >> $2
cat $(echo ${f3} | tr -d '\r' | tr -d '"').jpg | base64 --wrap=0 >> $2
echo >> $2
done < $1
Mas eu precisaria usar 4 colunas de dados que consistem em duas colunas de nome de arquivo, que então seriam pesquisadas usando o comando Cat.
4 dados da coluna.csv
item1 photoname1 filename1 filename5
item1 photoname2 filename2 filename6
item1 photoname3 filename3 filename7
item1 photoname4 filename4 filename8
echo \"id\",\"image/name\",\"images/image\", \"image\" > $2
while IFS="|" read f1 f2 f3 f4; do
echo -n $f1,\"$f2\", >> $2
cat $(echo ${f3} | tr -d '\r' | tr -d '"').jpg | base64 --wrap=0 >> $2
Eu tentei adicionar a quarta coluna usando a mesma ideia aqui:
cat $(echo ${f4} | tr -d '\r' | tr -d '"').jpg | base64 --wrap=0 >> $2
mas não adicionou os dados à quarta coluna, em vez disso, adicionou-os à terceira coluna. Então, eu devo estar perdendo alguma coisa porque não foi para a quarta coluna ao escrever os dados.
echo >> $2
done < $1
Tags cat csv base64 shell-script