gzip圧縮されたファイルのテキスト操作


はじめに

ディスク容量をおさえるために、ログ・ファイルなどはローテートする際にgzip圧縮されることが多いです。そういったファイルの中身をみるのに、さっと見たいときは解凍するのが面倒です。gzip圧縮したままでやるための小技を整理しました。

もとのファイル

$ cat sample.csv
1,sample1,06
2,sample2,07
3,sample3,08
4,sample4,09
5,sample5,10
6,sample6,11
7,sample7,12
8,sample8,13
9,sample9,14
10,sample10,15
11,sample11,16
12,sample12,17
13,sample13,18
14,sample14,19
15,sample15,20

zcat

zcatを一度かませば、標準出力にでるので、awkなどをパイプすれば、たいがいのテキスト操作ができます。

$ zcat sample.csv.gz
1,sample1,06
2,sample2,07
3,sample3,08
4,sample4,09
5,sample5,10
6,sample6,11
7,sample7,12
8,sample8,13
9,sample9,14
10,sample10,15
11,sample11,16
12,sample12,17
13,sample13,18
14,sample14,19
15,sample15,20

head

$ zcat sample.csv.gz | head
1,sample1,06
2,sample2,07
3,sample3,08
4,sample4,09
5,sample5,10
6,sample6,11
7,sample7,12
8,sample8,13
9,sample9,14
10,sample10,15

tail

$ zcat sample.csv.gz | tail
6,sample6,11
7,sample7,12
8,sample8,13
9,sample9,14
10,sample10,15
11,sample11,16
12,sample12,17
13,sample13,18
14,sample14,19
15,sample15,20

zless

$ zless sample.csv.gz

zdiff

$ zdiff sample.csv.gz sample2.csv.gz
1,15c1,3
< 1,sample1,06
< 2,sample2,07
< 3,sample3,08
< 4,sample4,09
< 5,sample5,10
< 6,sample6,11
< 7,sample7,12
< 8,sample8,13
< 9,sample9,14
< 10,sample10,15
< 11,sample11,16
< 12,sample12,17
< 13,sample13,18
< 14,sample14,19
< 15,sample15,20
---
> 1,sample1,1
> 2,sample2,2
> 3,sample3,3

zgrep

$ zgrep 'sample3' sample.csv.gz
3,sample3,08

補足

zcatなど、もとのコマンドにzをつけたものは、もとのコマンドのオプションがつかえます。

参考リンク