awk で CSV ファイルの必要な列だけ抜き出す方法
kawa.xxx
環境
- WIndows 10
- Cygwin
CSVの特定の列だけ全部欲しい
例えばこんなCSVがあるとします。
010,0001,00001,9291 010,0002,00005,7890 020,0002,00003,3213 020,0003,00002,4325 ...
このCSVの2列目と4列目のみ欲しいデータで、エディタでは編集がツライくらい大きいCSV(40MBくらい)なので、なんとかほかの方法でサクッとやってしまいたかったのです。
Windows 標準でははどうにもならない様子なので、Cygwin というか Linux コマンドを調べると awk に行き着きました。
学生時代から存在は知っていましたが、どうもちゃんと使う機会が無かったので、この機会に色々調べてでかいCSVファイルを処理させてみました。
以下のコマンドを使うと、上記のサンプルCSVの2列目と4列目のみをCSV形式で出力してくれます。
$ cat sample.csv | awk 'BEGIN{FS=",";OFS=","} {print $2,$4}' > out.csv
特に固まることもなくすんなり出力してくれました。やっぱり大きなテキストや CSV を処理するときはコマンドが便利だなぁ。
行番号を追加したり、集計したりも出来るようなので、また近々お世話になりそうな予感です。
参考文献
- http://bi.biopapyrus.net/linux/awk.html
- https://ja.wikipedia.org/wiki/AWK
- https://hydrocul.github.io/wiki/commands/awk.html
![[改訂第3版]Linuxコマンドポケットリファレンス [改訂第3版]Linuxコマンドポケットリファレンス](http://ecx.images-amazon.com/images/I/51ZPkoBGdZL._SL160_.jpg)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2015/06/05
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
ABOUT ME