1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

xzgrepコマンドの使い方

Last updated at Posted at 2021-04-16

1 xzgrepコマンドとは?

xzgrepコマンドは、以下の圧縮、非圧縮ファイルの中身を検索するコマンドです。
・xz
・lzma
・gzip
・bzip2
・lzop
・非圧縮

manの抜粋
  xzgrep invokes grep(1) on files which may be either uncompressed or compressed with xz(1), lzma(1), gzip(1), bzip2(1),
  or lzop(1).  All options specified are passed directly to grep(1).

2 環境

VMware Workstation 15 Player上の仮想マシンを使いました。
仮想マシンの版数は以下のとりです。

CentOSの版数
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
カーネル版数
[root@server ~]# uname -r
4.18.0-240.el8.x86_64

3 圧縮、非圧縮ファイルの中身を検索する方法

3.1 事前準備

圧縮前のファイルを作成します。

ファイルの作成
[root@server xzgrep]# vi test.txt
[root@server xzgrep]# cat test.txt
111
abc

xz形式のファイルを作成します。
この時-kオプションを指定して、圧縮前のファイルを残したままにします。
これ以降の全ての圧縮コマンドでも、同様に-kオプションを指定して
圧縮前のファイルを残したままにします。

圧縮ファイルの作成(xz)
[root@server xzgrep]# xz -k test.txt

[root@server xzgrep]# file test.txt.xz
test.txt.xz: XZ compressed data

lzma形式のファイルを作成します。

圧縮ファイルの作成(lzma)
[root@server xzgrep]# lzma -k test.txt

[root@server xzgrep]# file test.txt.lzma
test.txt.lzma: LZMA compressed data, streamed

gzip形式のファイルを作成します。

圧縮ファイルの作成(gzip)
[root@server xzgrep]# gzip -k test.txt

[root@server xzgrep]# file test.txt.gz
test.txt.gz: gzip compressed data, was "test.txt", last modified: Fri Apr 16 14:08:01 2021, from Unix, original size 8

bzip2形式のファイルを作成します。

圧縮ファイルの作成(bzip2)
[root@server xzgrep]# bzip2 -k test.txt

[root@server xzgrep]# file test.txt.bz2
test.txt.bz2: bzip2 compressed data, block size = 900k

lzop形式のファイルを作成します。

圧縮ファイルの作成(lzop)
[root@server xzgrep]# lzop -k test.txt

[root@server xzgrep]# file test.txt.lzo
test.txt.lzo: lzop compressed data - version 1.030, LZO1X-1, os: Unix

作成したファイルを確認します。

ファイル一覧
[root@server xzgrep]# ls -l
合計 24
-rw-r--r--. 1 root root  8  4月 16 23:08 test.txt
-rw-r--r--. 1 root root 45  4月 16 23:08 test.txt.bz2
-rw-r--r--. 1 root root 37  4月 16 23:08 test.txt.gz
-rw-r--r--. 1 root root 30  4月 16 23:08 test.txt.lzma
-rw-r--r--. 1 root root 70  4月 16 23:08 test.txt.lzo
-rw-r--r--. 1 root root 64  4月 16 23:08 test.txt.xz

3.2 実行結果

文字列111が含まれるファイルを一括で検索してみます。

実行結果
[root@server xzgrep]# xzgrep 111 test.txt*
test.txt:111
test.txt.bz2:111
test.txt.gz:111
test.txt.lzma:111
test.txt.lzo:111
test.txt.xz:111

文字列111またはabcが含まれるファイルを一括で検索してみます。

実行結果
[root@server xzgrep]# xzgrep -e 111 -e abc test.txt*
test.txt:111
test.txt:abc
test.txt.bz2:111
test.txt.bz2:abc
test.txt.gz:111
test.txt.gz:abc
test.txt.lzma:111
test.txt.lzma:abc
test.txt.lzo:111
test.txt.lzo:abc
test.txt.xz:111
test.txt.xz:abc

同じことをzgrepコマンドで実行してみました。
gzファイルはマッチした文字列の表示がきますが、lzo,xzファイルは表示ができません。
他の圧縮ファイル(bz2,lzma)については、マッチした文字列の表示ができませんでした。
xzgrepの方がzgrepに比べ、検索できる圧縮ファイルの種類が多いようです。

実行結果
[root@server xzgrep]# zgrep 111 test.txt*
test.txt:111
test.txt.gz:111
test.txt.lzo:バイナリファイル (標準入力) に一致しました
test.txt.xz:バイナリファイル (標準入力) に一致しました

4 圧縮ファイルの中身を確認する方法

lessコマンドを使うと、圧縮ファイルを解凍することなく中身を確認できます。
ただし、lzoファイルは圧縮したままでは確認することができませんでした。

bz2ファイルの中身を確認してみます。
圧縮したままで中身を確認することができます。

bz2ファイルの中身確認
[root@server xzgrep]# less -F test.txt.bz2
111
abc

gzファイルの中身を確認してみます。
圧縮したままで中身を確認することができます。

gzファイルの中身確認
[root@server xzgrep]# less -F test.txt.gz
111
abc

lzmaファイルの中身を確認してみます。
圧縮したままで中身を確認することができます。

lzmaファイルの中身確認
[root@server xzgrep]# less -F test.txt.lzma
111
abc

lzoファイルは、lessコマンドではそのままでは中身を確認できないようです。

lzoファイルの中身確認
[root@server xzgrep]# less -F test.txt.lzo
"test.txt.lzo" may be a binary file.  See it anyway?

xzファイルの中身を確認してみます。
圧縮したままで中身を確認することができます。

xzファイルの中身確認
[root@server xzgrep]# less -F test.txt.xz
111
abc

5 マッチした前後の行を表示する方法(-C)

圧縮ファイルを検索してマッチした行と、その前後の行を表示してみます。

ファイルの作成
[root@server xzgrep]# seq 1 10 > test.txt
[root@server xzgrep]# cat test.txt
1
2
3
4
5
6
7
8
9
10
圧縮ファイルの作成
[root@server xzgrep]# xz -k test.txt
ファイルの確認
[root@server xzgrep]# ls -l
合計 8
-rw-r--r--. 1 root root 21  4月 21 20:07 test.txt
-rw-r--r--. 1 root root 80  4月 21 20:07 test.txt.xz

圧縮ファイルの中から5にマッチした行と、その前後の2行を表示してみます。

実行結果
[root@server xzgrep]# xzgrep -C2 5 test.txt.xz
3
4
5
6
7

Z 参考情報

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?