時雨に舞う

プログラミングや技術情報などの備忘録

linuxのsedが便利

linuxsedコマンドが便利だったのでメモ。

圧縮状態で数GB、解凍したら数十GBもあるような巨大なテキストデータから特定の部分を削除したい場合に重宝する。

テキストエディタで開くのは非常に難しい。秀丸エディタでも部分指定して開くのが精いっぱい。しかも行番号は指定できない(ファイルを最初から読み進める事で行数を把握するだろうから当然と言えば当然)。

例えば圧縮されているファイルを展開しながら任意の範囲行を削除して再圧縮するにはこんな感じ。

# zcat a.sql.gz | sed -e '13456,25385!d' | gzip > b.sql.gz

これは13456行~25385行以外を削除する処理。

普通の手段でやろうとするとメモリに展開しようとしてメモリもスワップも食いつぶして大変な事に・・・。

 

著者:t.n