Recorra el archivo csv y guarde todos los elementos únicos de una columna en una matriz

Recorra el archivo csv y guarde todos los elementos únicos de una columna en una matriz

Estoy analizando un archivo csv muy grande y creando muchos subarchivos con su contenido según el valor de la primera columna. Hasta ahora, lo que he hecho es declarar manualmente una matriz:

declare -a arr=(
"Value 1"
"Value 2"
)

y luego recorro esta matriz y creo los archivos mini-csv con la información que me interesa, y también cambio el nombre de los archivos csv de salida para intercambiar espacios con guiones bajos:

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 alguna forma de automatizar también el primer paso? es decir, ¿puedo recorrer el archivo csv original y completar arr con todos los valores únicos de su columna 1?

Respuesta1

De una sola mano:

declare -A arr
while IFS=, read -r one rest
do
  arr[$one]=1
done < input.csv

Luego recorra las claves:

for i in "${!arr[@]}"
do
  #...
done

información relacionada