2017年02月22日

巨大なcsvファイルのヘッダだけ取り替えたい

巨大なcsvファイルのヘッダだけを取り替えたいということがしばしばあります。例えば、あるソフトウェアにデータを読み込ませたいのだけれど使用できない文字が入っているとか、ヘッダにだけ2バイト文字が入っていて、それらを英数になおしたいとか、ヘッダをつけ間違えたとか。でも、大きすぎてエディタで開いて修正することはできないし。

修正したいヘッダ付きのcsvファイルをA.csvとし、修正済みのヘッダだけを一行書いたファイルをH.csvとします。A.csvのヘッダをH.csvで取り替えて、B.csvに出力します。

コマンドラインから、

cat H.csv <(cat A.csv | tail -n +2) > B.csv

でOK。一つ前の記事でも使ったプロセス置換です。

この方法が本領発揮するのは、巨大なデータファイルがgzipされているとき。そもそも大きいファイルは圧縮されていることが多く、これらを展開するとやたらディスクを食うので、できれば圧縮したまま取り扱いたい。その場合には

cat H.csv <(zcat A.csv.gz | tail -n +2) | gzip > B.csv.gz

こうすれば、展開ファイルを作ることなくヘッダを取り替えられます。



posted by jinya at 23:29| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。