知っておくとちょっと便利!ファイルの行頭・末尾を取り出す head コマンドと tail コマンド

今号では、head コマンドおよび tail コマンドの使い方やオプションについてご紹介します!
※用途が似ているため、今号では 2つのコマンドについて同時にご説明させていただきます

head コマンド・tail コマンドとは

head コマンドや tail コマンドは、ファイルの一部分の情報を取り出して表示するコマンドです。
情報量の多いテキストファイルやログファイルなどでも、冒頭の部分や末尾の部分 (ログファイルであれば一番新しい情報に該当します) のみを取り出して表示する事ができるため、必要な情報を探しやすいというメリットがあります。

基本の書式

“head <ファイル名>” コマンドを実行すると、指定したファイルの行頭から 10行の情報が、
“tail <ファイル名>” コマンドを実行すると、指定したファイルの末尾から 10行の情報が表示されます。

例として、1 から 30 までの数字を各行に記載した test.txt コマンドの情報を表示してみます。

$ cat test.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

head コマンドを実行した場合

$ head test.txt
1
2
3
4
5
6
7
8
9
10

tail コマンドを実行した場合

$ tail test.txt
21
22
23
24
25
26
27
28
29
30

上記 head コマンドや tail コマンドの出力結果を、標準出力ではなくファイルに出力し、内容を確認したい場合は下記の様にすると良いですね。

$ head test.txt > file.txt
$ cat file.txt
1
2
3
4
5
6
7
8
9
10

head コマンドおよび tail コマンドのオプション

次に、head コマンドおよび tail コマンドで使用可能なオプションをご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。

  • 表示する行数を指定する (head コマンド、tail コマンド共通)
    -n もしくは を指定すると、指定した数字分の行数で情報を表示します。
    $ head -n 5 test.txt
    1
    2
    3
    4
    5
    
    $ tail -n 5 test.txt
    26
    27
    28
    29
    30
    

    上記は、-5 としても同様に指定した行数の情報を表示します。

    $ head -5 test.txt
    1
    2
    3
    4
    5
    
    $ tail -5 test.txt
    26
    27
    28
    29
    30
    
  • ファイルの情報を連続して取得し続ける (tail コマンドのみ)
    tail -fを実行すると、ファイルの末尾の情報を連続して取得し続けます。
    ログファイルなど、リアルタイムで情報が更新されるファイルの情報を監視する際などに便利です。
    # tail -f /var/log/messages
    Nov 18 09:30:01 example systemd: Removed slice User Slice of root.
    Nov 18 09:40:01 example systemd: Created slice User Slice of root.
    Nov 18 09:40:01 example systemd: Started Session 8618 of user root.
    Nov 18 09:40:01 example systemd: Removed slice User Slice of root.
    Nov 18 09:43:04 example systemd: Created slice User Slice of root.
    Nov 18 09:43:04 example systemd: Started Session 8619 of user root.
    Nov 18 09:43:04 example systemd-logind: New session 8619 of user root.
    Nov 18 09:43:05 example dbus[5201]: [system] Activating service name='org.freedesktop.problems' (using servicehelper)
    Nov 18 09:43:05 example dbus[5201]: [system] Successfully activated service 'org.freedesktop.problems'
    Nov 18 09:50:01 example systemd: Started Session 8620 of user root.
    
    (指定したファイルの情報が追加されるたびに、連続して取得され続ける)
    

    ※情報の取得を終了したい場合は [Ctrl] + [C] を押下します。

    なお tail コマンドではありませんが、less コマンドの実行中に [Shift] + [F] を押下する事でも同様に、連続して情報を取得し続けます (情報の取得を終了したい場合は [Ctrl] + [C] を押下)。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

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