
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