Lendo CSV e escrevendo CSV com codificação Base64 usando cat

0

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.

Primeiro o estado atual

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
    
por Snowfly 09.08.2018 / 16:04

0 respostas