Linux便利コマンド : head

うめだ
2023-09-13
2023-09-13
目次

はじめに

みなさま、headコマンドを活用されてますでしょうか?

引数として指定したファイルの先頭から、オプションとして指定した行数のみを表示させるコマンドです。

※行数だけでなく、バイト数での指定も可能ですが、正直使った記憶はありません。すみません。

単純に任意のファイルに対して、どんな中身かを確認するために、とりあえず、先頭の10行を表示させて確認してみるっていうので良く使っています。

一番便利なのは、複数のテキストの内容を一括で出力して確認することができる点です。この使い方、ご存じでしたか?

では、具体的な利用方法を紹介します。

環境

OS : AlmaLinux 8
headバージョン : 8.30

使い方

まずは以下のようなサンプルファイルを準備します。

$ cat aaa.txt
01,aaa
02,aaa
03,aaa
04,aaa
05,aaa
06,aaa
07,aaa
08,aaa
09,aaa
10,aaa
11,aaa
12,aaa
13,aaa
14,aaa
15,aaa
16,aaa
17,aaa
18,aaa
19,aaa
20,aaa
$

-nオプションで、5を指定することで、先頭の5行が表示されます。

$ head -n5 aaa.txt
01,aaa
02,aaa
03,aaa
04,aaa
05,aaa
$

以下のコマンドでサンプルファイルを複数作成します。

$ for i in bbb ccc ddd
> do
>
> cat aaa.txt | sed "s/aaa/${i}/g" > ${i}.txt
>
> done
$

ファイルが作成されたことを確認します。

$ ls -l
total 16
-rw-rw-r-- 1 future future 140 Sep 12 18:13 aaa.txt
-rw-rw-r-- 1 future future 140 Sep 12 18:34 bbb.txt
-rw-rw-r-- 1 future future 140 Sep 12 18:34 ccc.txt
-rw-rw-r-- 1 future future 140 Sep 12 18:34 ddd.txt
$

できてますね。では、下記のコマンドで対象ファイルを一括指定します。

$ head -n5 *.txt
==> aaa.txt <==
01,aaa
02,aaa
03,aaa
04,aaa
05,aaa

==> bbb.txt <==
01,bbb
02,bbb
03,bbb
04,bbb
05,bbb

==> ccc.txt <==
01,ccc
02,ccc
03,ccc
04,ccc
05,ccc

==> ddd.txt <==
01,ddd
02,ddd
03,ddd
04,ddd
05,ddd
$

どうですか? ファイル名の表示の後に、指定した先頭から5行が表示され、この形式で指定したファイル分が出力されます。

単純な内容のファイルを一括指定し、出力結果から、各ファイルの内容を比較したりする際にとても便利です。


ちなみに、-qオプションを指定することで、ファイル名を非表示にすることができます。。。

$ head -q -n5 *.txt
01,aaa
02,aaa
03,aaa
04,aaa
05,aaa
01,bbb
02,bbb
03,bbb
04,bbb
05,bbb
01,ccc
02,ccc
03,ccc
04,ccc
05,ccc
01,ddd
02,ddd
03,ddd
04,ddd
05,ddd
$

まとめ

いかがでしたか?

サーバーの運用管理業務をするなかで、おなじようなテキストファイルの内容を比較して確認することは多々あると思います。

そんなときに、headコマンドを活用してみてはいかがでしょうか?