
Estou analisando um arquivo CSV muito grande e criando vários subarquivos com seu conteúdo de acordo com o valor da primeira coluna. Até agora, o que fiz foi declarar manualmente um array:
declare -a arr=(
"Value 1"
"Value 2"
)
e então percorro esse array e crio os arquivos mini-csv com as informações de meu interesse, alterando também o nome dos arquivos csv de saída para trocar espaços com sublinhados:
for i in "${arr[@]}"
do
NAME=${i// /_}
echo $header > "$outputpath/$NAME.csv"
grep "^$i," "$fixed_file" | cut -d ',' -f 4,6 >> "$outputpath/$NAME.csv"
done
Existe uma maneira de automatizar a primeira etapa também? ou seja, posso percorrer o arquivo csv original e preencher arr com todos os valores exclusivos de sua coluna 1?
Responder1
Mão Única:
declare -A arr
while IFS=, read -r one rest
do
arr[$one]=1
done < input.csv
Em seguida, passe pelas teclas:
for i in "${!arr[@]}"
do
#...
done