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