シェルスクリプトでの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)

コードの説明:

  1. read コマンドで標準入力から一行を読み取り、その内容を変数 col1 col2 col3 に格納します(-a オプションを付けて、直接配列に格納することもできます)。環境変数 IFS (internal field separator) で区切り文字を指定します。

  2. tail -n +2 $CSVFILE コマンドは CSV ファイルのヘッダー行を飛ばして出力します。 <()プロセス置換 (process substitution)tail -n +2 $CSVFILE コマンドの実行結果をファイルとして扱うことができます。< は標準入力にリダイレクトします。

配列の要素数を取得:${#array1[@]}

配列のすべての要素を出力:echo ${array1[@]}

Tags:

Updated: