Surgiu recentemente a necessidade converter arquivo CSV em JSON.
Para realizar tal atividade, utilize os passo especificados no comentário do código abaixo:
#!/bin/bash
# Converter CSV para JSON utilizando o BASH
# Como utilizar:
# 1- salve o código abaixo como o nome de csv2json
# 2- aplique a permissão de execusão ao arquivo: chmod +x ./csv2json
# 3- Execute o comando ./csv2json input.csv > output.json
input=$1
#validações do arquivo passado
[ -z $1 ] && echo "Não foi passado nenhum arquivo CSV " && exit 1
[ ! -e $input ] && echo "Não foi possível localizar o arquivo $1" && exit 1
read first_line < $input
a=0
headings=`echo $first_line | awk -F, {'print NF'}`
lines=`cat $input | wc -l`
while [ $a -lt $headings ]
do
head_array[$a]=$(echo $first_line | awk -v x=$(($a + 1)) -F"," '{print $x}')
a=$(($a+1))
done
c=0
echo "{"
while [ $c -lt $lines ]
do
read each_line
if [ $c -ne 0 ]; then
d=0
echo -n "{"
while [ $d -lt $headings ]
do
each_element=$(echo $each_line | awk -v y=$(($d + 1)) -F"," '{print $y}')
if [ $d -ne $(($headings-1)) ]; then
echo -n ${head_array[$d]}":"$each_element","
else
echo -n ${head_array[$d]}":"$each_element
fi
d=$(($d+1))
done
if [ $c -eq $(($lines-1)) ]; then
echo "}"
else
echo "},"
fi
fi
c=$(($c+1))
done < $input
echo "}"
