74
63

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 5 years have passed since last update.

CSV ファイルの特定の列を取り出す

Last updated at Posted at 2015-01-12

こんなファイルがあったとき

$ cat member.csv

id,name,age
1,taro,21
2,jiro,18
3,saburo,16
4,shiro,15
5,goro,12

id だけ取り出したいという場合がありますよね?
そんな時は cut コマンドと sed コマンドを使えば簡単に取り出せます。

まず cut します。

cut -d ',' -f 1 member.csv

cut コマンドはその名の通り文字列を切り出すコマンドです。それぞれのオプションの意味は、、、

-d は区切り文字の指定です。今回はカンマ区切りの入力ファイルなので、カンマを指定しています。何も指定しないとタブが区切り文字となります。

-f は何番目の文字列を取得するかを指定します。例えば id は一列目なので、-f 1 となります。同じように name なら 2 、age なら 3 を指定すれば取得できます。

上記のコマンドを実行すると以下のようになります。

id
1
2
3
4
5

これで id が取り出せました。
しかし、今回取り出したいのは値だけなので、id という行は不要です。そこで、sed コマンドで消します。

sed コマンドは文字列の置換や削除を行うためのコマンドです。
今回は一行目を削除したいので、

cut -d ',' -f 1 member.csv | sed -e '1d'

とします。
-e はスクリプトを記述するためのオプションです。そして、d が削除を表します。一行目を削除したい場合は 1d となります。一から五行目を削除したければ 1,5d という様に指定します。

上のスクリプトを実行すると

1
2
3
4
5

無事 id だけを取り出せました。

余談

ちなみに sed コマンドで文字列の置換を行い場合は以下の様にします。

sed -e 's/,/|/g' member.csv

s/置換条件/置換文字/g です。

id|name|age
1|taro|21
2|jiro|18
3|saburo|16
4|shiro|15
5|goro|12

こうなります。

74
63
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
74
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?