bashスクリプトでCSVファイルを読み込む方法

bashスクリプトでCSVファイルを読み込む方法

Posted at February 14,2025 11:55 PM
Tag:[bash]

bashスクリプトでCSVファイルを読み込む方法を紹介します。

1.問題点

bashスクリプトで大量CSVのデータを読み込む必要が生じましたが、読み込む方法がわかりません。

ということで、bashスクリプトでCSVファイルを読み込む方法を紹介します。

2.bashスクリプトでCSVファイルを読み込む

ここではCSVファイルに「名前」「ユーザー名」「パスワード」を3件設定したファイル(sample.csv)を読み込むものとします。

山田,yamada,GU2LTgyM
鈴木,suzuki,Njg4ZWYz
佐藤,sato,b291bf53

bashスクリプト(test.sh)でCSVファイルを読み込むには次のようにします。

#!/bin/bash
 
# 引数でCSVファイル名を取得
input_file="$1"
 
# CSVファイルを行ごとに読み込み
while IFS=',' read -r NAME USER PASS; do
 
    echo "名前: $NAME"
    echo "ユーザー名: $USER"
    echo "パスワード: $PASS"
 
    # ここに必要な処理を追加
 
done < "$input_file"

これでCSVファイルの内容が1行ずつ読み込まれ、変数$NAME,$USER,$PASSにそれぞれ格納されます。

あとは、必要な処理をその中に追加すればOKです。

実行結果

$ ./test.sh sample.csv
名前: 山田
ユーザー名: yamada
パスワード: GU2LTgyM
名前: 鈴木
ユーザー名: suzuki
パスワード: Njg4ZWYz
名前: 佐藤
ユーザー名: sato
パスワード: b291bf53

引数が設定されていない場合のチェックを行うには、赤字の処理を追加します。

#!/bin/bash
 
# 引数でCSVファイル名を取得
input_file="$1"
 
# 引数が指定されていない場合のエラーメッセージ
if [[ -z "$input_file" ]]; then
    echo "使用法: $0 <CSVファイル名>"
    exit 1
fi
 
# CSVファイルを行ごとに読み込み
while IFS=',' read -r NAME USER PASS; do
 
    echo "名前: $NAME"
    echo "ユーザー名: $USER"
    echo "パスワード: $PASS"
 
    # ここに必要な処理を追加
 
done < "$input_file"

さらに、CSVファイルにコメント行や空行が含まれる場合は赤字の処理を追加します。

#!/bin/bash
 
# 引数でCSVファイル名を取得
input_file="$1"
 
# 引数が指定されていない場合のエラーメッセージ
if [[ -z "$input_file" ]]; then
    echo "使用法: $0 <CSVファイル名>"
    exit 1
fi
 
# CSVファイルを行ごとに読み込み
while IFS=',' read -r NAME USER PASS; do
 
    # 空行やコメント行はスキップ
    if [[ -z "$NAME" || "$NAME" =~ ^# ]]; then
        continue
    fi
 
    echo "名前: $NAME"
    echo "ユーザー名: $USER"
    echo "パスワード: $PASS"
 
    # ここに必要な処理を追加
 
done < "$input_file"
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)