
はじめに
シェルスクリプトにて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ファイルを使用するために書きましたが、他にも応用が効くと思います。

![[超簡単!]情報処理試験のための論理回路の覚え方](https://www.yukiiworks.com/wp-content/uploads/2019/03/code1211IMGL1494_TP_V4-150x150.jpg)
![[bootstrap-tagsinput]タグ入力欄でEnterキー押下時にSubmitさせない方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/javascript-150x150.png)
![[Android Studio 3.5]Cause: buildOutput.apkData must not be nullエラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/10/android-studio-e1585186990750-150x150.jpg)
![[Docker]different lower_case_table_names settings for server ('1') and data dictionary ('0').エラーでコンテナが起動できない問題について](https://www.yukiiworks.com/wp-content/uploads/2019/08/docker-logo-2-150x150.png)
![[Laravel]バリデーションルールを使って特定のカラムで存在チェックする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/laravel-150x150.png)
![[Flutter]iOS実機ビルド時に"iproxy"は、開発元を検証できないため開けません。と表示された場合の対処法](https://www.yukiiworks.com/wp-content/uploads/2020/08/flutter-150x150.png)
![[iOS13]ERROR ITMS-90785: “UIUserInterfaceStyle can’t be ‘light’. It can only be ‘Light’, ‘Dark’, or ‘Automatic’.エラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/09/Xcode-150x150.png)
![[AndroidX対応]Error inflating class android.support.design.widget.BottomNavigationViewエラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/04/android-150x150.jpg)
