シェルでcsvの読み込み処理を実装

シェルでcsvの読み込み処理を実装

シェルスクリプトでCSVファイルを読み込むためには、awkやIFS(内部フィールドセパレータ)を利用するのが一般的です。
以下は、CSVファイルを読み込み、データを処理するためのシェルスクリプトの基本的な例です。
ここでは、awkを使用してCSVファイルを読み込む方法を紹介します。

スクリプトの例

以下のシェルスクリプトは、CSVファイルを読み込み、各行をカンマで区切って表示します。
CSVファイルの各フィールドに対して処理を行う方法も示します。

read_csv.sh
#!/bin/bash

# CSVファイル名
CSV_FILE="data.csv"

# CSVファイルが存在するか確認
if [[ ! -f "$CSV_FILE" ]]; then
  echo "Error: $CSV_FILE does not exist."
  exit 1
fi

# CSVファイルを読み込んで処理する
while IFS=, read -r col1 col2 col3
do
  # 各列のデータを表示(必要に応じて変更)
  echo "Column 1: $col1"
  echo "Column 2: $col2"
  echo "Column 3: $col3"
  echo "----------------------"
done < "$CSV_FILE"

スクリプトの説明

1. ファイルの存在確認:
スクリプトは、CSVファイルが存在するかどうかを確認します。
存在しない場合、エラーメッセージを表示して終了します。

2. whileループとIFS:
whileループとIFS(内部フィールドセパレータ)を使用して、CSVファイルの各行を読み込みます。
IFS=,はカンマでフィールドを区切ることを指定しています。

3. readコマンド:
readコマンドを使用して、各行を指定した変数(ここではcol1, col2, col3)に分割します。

4. データ処理:
読み込んだデータを表示するか、必要な処理を行います。
ここでは、各列のデータを表示していますが、実際にはこの部分でさまざまな処理が可能です。

CSVファイルの例

以下は、スクリプトで使用するCSVファイルの例です。

data.csv
Alice,30,Engineer
Bob,25,Designer
Charlie,35,Manager

このスクリプトを実行することで、data.csvの内容が読み込まれ、各列のデータが表示されます。
スクリプトを実行するには、以下のコマンドを使用します。

bash read_csv.sh

注意点

  • CSVファイルにカンマ以外の区切り文字(例えば、セミコロン)が使用されている場合は、IFSの値を適宜変更する必要があります。
  • CSVファイルにクオートで囲まれたフィールドが含まれている場合や、フィールド内にカンマが含まれる場合は、より複雑な解析が必要です。

その場合、awkやcsvkitなどの専用ツールの使用を検討することをおすすめします。