bashでカンマ区切りのファイルを読み込み、変数を設定する。

以下のようなCSVファイルを読み込み、中の値を使いたいときはどうするか。
適当な「hoge.csv」を作ってみる。


hoge,fuga,foo,bar
#comment
var,boo,yahoo,yahhhh
#comment2

このサンプルは意味不明な言葉をカンマ区切りで羅列しているだけだが、CSVに意味を持たせて、一区切り目はディレクトリ名、二区切り目はファイル名、などとすることもできる。

で、このようなファイルから値を取り出し、シェルスクリプト内で活用したいときはどうするかというと、
for文とcutを組み合わせれば簡単に実現できる。
順番に見ていこう。

まず、ファイルを1行ずつ読み込んでみる

#!/bin/sh
csvfile=hoge.csv
for line in `cat ${csvfile} | grep -v ^#`
do
  echo ${line}
done

これを実行すると、結果はこうなる。

hoge,fuga,foo,bar
var,boo,yahoo,yahhhh

気付いた人もいるかもしれないが、

`cat ${csvfile} | grep -v ^#`

とすることで、ファイルの「#」がつくコメント行を除いたものが表示されている。
さて、これでファイルの1行1行を取り出すことができたので、中のカンマ区切りの値を利用してみよう。
カンマ区切りのテキストファイルの値を利用するサンプルは・・・

#!/bin/sh
csvfile=hoge.csv
for line in `cat ${csvfile} | grep -v ^#`
do
  first=`echo ${line} | cut -d ',' -f 1`
  second=`echo ${line} | cut -d ',' -f 2`
  third=`echo ${line} | cut -d ',' -f 3`
  fourth=`echo ${line} | cut -d ',' -f 4`
  echo "1区切り目は:${first}"
  echo "2区切り目は:${second}"
  echo "3区切り目は:${third}"
  echo "4区切り目は:${fourth}"
  echo "----行終わりっ!-------"
done

これを実行した結果は以下のようになる。

1区切り目は:hoge
2区切り目は:fuga
3区切り目は:foo
4区切り目は:bar
----行終わりっ!-------
1区切り目は:var
2区切り目は:boo
3区切り目は:yahoo
4区切り目は:yahhhh
----行終わりっ!-------

うまいことカンマ区切りのファイルを読み込むことができました。

★以下はおすすめ記事です★
ベッドインキャンパスの1話から最新話までの全話ネタバレまとめ 女神スタグラムの1話から最新話までの全話ネタバレまとめ 【口コミ】ドクターストレッチのメリットとデメリット|整体やマッサージとの違いとは 漫画『JKからやり直すシルバープラン』を無料で読む方法|あらすじと感想



お金があるかないかで人生の楽しさは全く変わってきます。

お金があっても幸せになれるとは限りませんが、お金がない人生は不幸です。

お金がなかった私が、転職して年収1000万を超えるまでにお世話になったブログを紹介します。

エンジニア転職のリアル

今の時代は、お金を稼げるかどうかは能力の有無よりも触れた情報の質によるものが大きいです。
ぜひ皆さんも良質な情報に触れて、お金持ちになって人生を充実させてください。