我正在解析一个非常大的 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 文件并使用其第 1 列的所有唯一值填充 arr 吗?
答案1
单程:
declare -A arr
while IFS=, read -r one rest
do
arr[$one]=1
done < input.csv
然后循环按键:
for i in "${!arr[@]}"
do
#...
done