
はじめに
シェルスクリプトにてCSVファイル内の値を処理に使用する方法になります。
データベースからエクスポートしたCSVファイルを使ってその値から処理を行う必要があった際に書きました。
サンプルCSVファイル
以下の様なCSVファイルがあると想定して項目の値を取得します。
ファイル名:csvFile.csv
1,aaa,bbb,ccc,ddd
2,eee,fff,ggg,hhh
このようなファイルから各項目の値を取り出して、シェルスクリプト内で使用したいときはfor文とcutをうまく組み合わせることで簡単に実現することができました。
スクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | CSV_FILE=csvFile.csv for line in `cat ${CSV_FILE} do colmun1=`echo ${line} | cut -d ',' -f 1` colmun2=`echo ${line} | cut -d ',' -f 2` colmun3=`echo ${line} | cut -d ',' -f 3` colmun4=`echo ${line} | cut -d ',' -f 4` colmun5=`echo ${line} | cut -d ',' -f 5` echo "項目1:${colmun1}" echo "項目2:${colmun2}" echo "項目3:${colmun3}" echo "項目4:${colmun4}" echo "項目5:${colmun5}" echo "行終了" done |
解説
手順としてはまず、for line in csvファイル名を使ってCSVファイルを1行ずつ読み込むループ処理を作成しています。
そしてそのループ内で現在行の文字列をcutコマンドを使用して分割、-dオプションを使用してデリミタ(区切り文字)を指定します。
さらに-fコマンドを使用して抽出するフィールドの番号(列)を指定します。
このように処理することで各行の各項目の値を取得することができます。
また、CSVファイルでも各項目がダブルクォーテーションで括られているようなケースで項目値を取り出すには「sedコマンドを使用して文字列からダブルクォーテーションを削除する方法」を参考にしていただければすぐにできると思います。
今回はデータベースから出力したCSVファイルを使用するために書きましたが、他にも応用が効くと思います。

![[AWS]Node.jsでSSMパラメータストアの値を取得する](https://www.yukiiworks.com/wp-content/uploads/2020/03/aws-eyecatch-960x504-1-150x150.png)
![[Android]ListViewで区切り線を消す方法](https://www.yukiiworks.com/wp-content/uploads/2019/04/android-150x150.jpg)
![[Xcode]アップデートが保留中で起動できない、アップデートはしたくない場合について](https://www.yukiiworks.com/wp-content/uploads/2019/09/Xcode-150x150.png)
![[Laravel]ランダムな文字列を生成する](https://www.yukiiworks.com/wp-content/uploads/2019/05/laravel-150x150.png)

![[Android]ToolBarで左側にできる隙間をなくす方法](https://www.yukiiworks.com/wp-content/uploads/2019/10/android-studio-e1585186990750-150x150.jpg)
![[Python3]Enumで定義した値のリストを取得する](https://www.yukiiworks.com/wp-content/uploads/2019/11/python-logo-150x150.png)
![[AWS]Lambdaの環境変数をCLIコマンドで設定する](https://www.yukiiworks.com/wp-content/uploads/2020/04/lambda30-150x150.png)

