0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linuxにて、csvから指定した列の値のみ取得する方法

Last updated at Posted at 2021-07-23

csvから指定した列の値のみ取得するのに手こずったため、その方法を共有します。

#環境
Windows10
WSL2
Ubuntu 20.04.2 LTS (Focal Fossa)

#前提
以下のファイルの中身を取得します。

test.csv
apple,banana,orange
Tokyo,Osaka,Kyoto
Baseball,Basketball,Soccer

#実行

sample.sh
#!/bin/bash

while read row; do
        num=(${row//,/ })
        num1=${num[0]}
        echo $num1
done < test.csv

test.csvから一行ずつループ処理します。

num=(${row//,/ })

Linuxではデフォルトの区切り文字は「スペース」「タブ」「改行」($'\t\n')となっているので、カンマを「スペース」に置換し、num配列に格納します。

$ bash sample.sh
apple
Tokyo
Baseball

test.csvの最初の列の値が全て取得できてますね。

#注意

sample_false.sh
#!/bin/bash

while read row; do
        num=($row)
        echo ${num[0]}
done < test.csv
$ bash sample_false.sh
apple,banana,orange
Tokyo,Osaka,Kyoto
Baseball,Basketball,Soccer

カンマを「スペース」に置換しなかった場合、
csvファイルから取得した一行がひとまとまりのデータと認識され、配列の0番目の要素に全て格納されてしまいます。

###終わりです。

#関連リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?