
我正在解析一個非常大的 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