sedでcsvの先頭行にカラム名を追加する(Mac編)


MacではSedの挙動がLinuxとかとは違ったのでメモ。

やりたいこと

下記のようなCSVがあったとき、

test.csv
01,aaa
02,bbb
03,ccc

下記のように、1行目にカラム行を追加したい。

test.csv
no,name
01,aaa
02,bbb
03,ccc

通常、エディタで開いて追加すればいいだけの話ですが、ファイルが1億行とかの場合、開くのだけでも大変なので、sedで追加したい。

やりかた

本当は・・・

sed -i '' '1s/^/no,name\n/' test.csv

のようにしたい(linuxではできる)。がMacだと期待通り動かない。どうやらBSD系, Linux系の差らしい。

Macでは

sed -i '' '1s/^/no,name\
/' test.csv

のように、実際に改行したコマンドを実行する(nは消す)。

なんかダサイけどとりあえず。

確認

先頭行を見たい場合、lessコマンドを使うのが結局一番よいらしい。