sedの2GBの壁

改行のない巨大なjsonを整形しようと思ったのだけれど、sedがうまく動かず。

$ head -c$((2*1024*1024*1024-1)) no-lf-big.json | ~/bin/sed "s/},{/}\n{/g" | wc -l
6435781
$ head -c$((2*1024*1024*1024)) no-lf-big.json | ~/bin/sed "s/},{/}\n{/g" | wc -l
0

なんでやねーん。

ちなみにDebian6.0.7 64bit。
手元のmacだとうまくいった。

結局splitで分割してやった。

zcat $1 | split -b1024m - $1.
sed -z 's/},{/}\n{/g' $1.a* | sed 's/\x0//g' | sed 's/},{/}\n{/g' > $1.converted.gz

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>