bash、awk、python3でcsvファイルを自由自在にしたい。都度調べるのがダルいので手に覚えさせる。
サンプルcsvはこれ。上場企業の当期利益と資本金を一覧にしてみる。
とりあえずアタマの50件だけダウンロード。
$ cat japan-all-stock-financial-results_20180901.csv | wc
$ vim japan-all-stock-financial-results_20180901.csv
「名称」「当期利益」「自己資本」だけ取り出してみる。
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, '{print $2,$8,$10}'
石油会社やら建設会社やら多いなぁ。コロナ禍でもシコタマ儲けてやがる。
ダブルクオートがウザいのでsedで取り払う。
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, '{print $2,$8,$10}' | sed -e s/\"//g
うむ。
さて、 awk -F, '{print $2,$8,$10}' でprintしたので各項目の区切り文字が空白になってしまっている。
awkのprint文では、各フィールドをカンマで区切ると出力は空白になる仕様だから。紛らわしいが慣れるしかない。
で。これをカンマ区切りにして出力したい。つまりこうしたい。
こうやる。
$ cat japan-all-stock-financial-results_20180901.csv | awk -F, 'BEGIN{OFS=","}{print $2,$8,$10}' | sed -e s/\"//g
BEGIN{} の中でawkで使うOFSをカンマに指定してやればOK。
これと同じことをbashでもできるみたい。
応用の幅が広そう。次回試す。