
Я анализирую очень большой файл csv и создаю много подфайлов с его содержимым в соответствии со значением первого столбца. До сих пор я вручную объявлял массив:
declare -a arr=(
"Value 1"
"Value 2"
)
а затем я прохожусь по этому массиву и создаю мини-CSV-файлы с нужной мне информацией, а также меняю имена выходных CSV-файлов, заменяя пробелы подчеркиваниями:
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
Есть ли способ автоматизировать и первый шаг? То есть, можно ли пройтись по исходному CSV-файлу и заполнить arr всеми уникальными значениями его столбца 1?
решение1
В одну сторону:
declare -A arr
while IFS=, read -r one rest
do
arr[$one]=1
done < input.csv
Затем пройдитесь по ключам:
for i in "${!arr[@]}"
do
#...
done