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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

今号では、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] を押下)。

アバター画像
About 貝野 友香 71 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる