シェルスクリプトでのCSVファイルの読み込み
以下のサンプルでは、引数で渡したCSVファイルを読み込んで、各列のデータを配列に格納します。
CSVFILE=$1
# 1
while IFS=',' read -r col1 col2 col3; do
array1+=("${col1}")
array2+=("${col2}")
array3+=("${col3}")
# 2
done < <(tail -n +2 $CSVFILE)
コードの説明:
-
read
コマンドで標準入力から一行を読み取り、その内容を変数 col1 col2 col3 に格納します(-a
オプションを付けて、直接配列に格納することもできます)。環境変数IFS
(internal field separator) で区切り文字を指定します。 -
tail -n +2 $CSVFILE
コマンドは CSV ファイルのヘッダー行を飛ばして出力します。<()
はプロセス置換 (process substitution)、tail -n +2 $CSVFILE
コマンドの実行結果をファイルとして扱うことができます。<
は標準入力にリダイレクトします。
配列の要素数を取得:${#array1[@]}
配列のすべての要素を出力:echo ${array1[@]}