
非常に大きな 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