bashスクリプトでCSVファイルを読み込む方法
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"
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- シェルスクリプトでtelnet接続する方法
トラックバックURL
コメントする
greeting