Um caminho:
declare -A arr
while IFS=, read -r one rest
do
arr[$one]=1
done < input.csv
Em seguida, percorra as teclas:
for i in "${!arr[@]}"
do
#...
done
Estou analisando um arquivo csv muito grande e criando muitos sub-arquivos com seu conteúdo de acordo com o valor da primeira coluna. Até agora, o que eu fiz é declarar manualmente um array:
declare -a arr=(
"Value 1"
"Value 2"
)
e, em seguida, faço um loop por essa matriz e crio os arquivos mini-csv com as informações de que me importo, 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 o primeiro passo também? i.e., Posso percorrer o arquivo csv original e preencher arr com todos os valores exclusivos de sua coluna 1?