Linuxコマンド - head

2021年2月12日 (金) 13:00時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == headコマンドとtailコマンドを使用したフィルタリング == ==== 先頭行からN行を表示する ==== テキストファイ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

概要



headコマンドとtailコマンドを使用したフィルタリング

先頭行からN行を表示する

テキストファイルの先頭からN行のみを表示する場合は、headコマンドを使用する。

head -n <行数>  # headコマンドで先頭から指定した行数分表示する


ファイルやコマンド実行結果等から、最初の数行のみを表示する場合は、
headコマンドを使用することで、先頭行から数えて指定行数までを表示することができる。

以下の例では、headコマンドで上3行を表示している。

seq 1 10 | head -n 3

1
2
3


先頭行から下からN行目までを表示する

headコマンドにマイナスの行数Nを指定することで、先頭行〜最下行からN行目までを表示することができる。

head -n -<末尾からの行数>  # headコマンドにマイナスの行数指定で末尾N行を除いて表示する


マイナスの行数は、最下行から数えた行数を意味し、headコマンドは先頭行からその行までを表示する。
つまり、headコマンドへのマイナス行数の指定は、最下行からN行を消去するという処理になる。

seq 1 10 | head -n -3

1
2
3
4
5
6
7


最下行からN行を表示する

テキストファイルの最下行〜N行のみを表示する場合、tailコマンドを使用する。

tail -n <行数>  # tailコマンドで下からN行を表示する


ファイルやコマンド実行結果等から下から数行のみを表示する場合は、
tailコマンドを使用することで、最下行から数えて指定行数までを表示することができる。

ログファイルの最新のログのみを参照する場合等、tailコマンドを使用する。
特に、ログファイルを同期しながら参照する時は、tailコマンドに-fオプションを付加する。

seq 1 10 | tail -n 3

8
9
10


先頭行のN行目から最下行までを表示する

tailコマンドに+<行数>を指定することで、先頭のN行目〜最下行までを表示することができる。

tail -n +<行数>  # tailコマンドにプラスの行数指定で先頭からN行を除いて表示する


+が無い場合、最下行から数えてN行目〜最下行までが表示されるが、+を付加する場合、先頭行のN行目から最下行までが表示される。
この時、表示にはN行目も含まれる。

seq 1 10 | tail -n +3

3
4
5
6
7
8
9
10


上からN行目および下からM行目までを表示する

テキストファイルの最上行からN行目〜最下行からM行目までを表示する場合は、headコマンドとtailコマンドを組み合わせて使用する。

例えば、テキストファイルからヘッダ部分とフッタ部分を削除する場合は、
ヘッダ部の行数をN行、フッタ部の行数をM行として実行する時、全体からヘッダ部とフッタ部を除いた部分を取得できる。

tail -n +N | head -n -(M-1)  # 下からM行目が消えないように、コマンドには1を引いた値を指定する


以下の例では、上から2行目〜下から5行目までを表示している。
まず、tailコマンドで2行目〜から最下行までを出力して、次に、headコマンドで下から数えて5行目までを表示している。
headコマンドに4を指定しているのは、5を指定すると下から5行目も削除されてしまうため、それを避けるためである。

seq 1 10 | tail -n +2 | head -n -4

2
3
4
5
6


下表に、tailコマンドおよびheadコマンドが行う処理を視覚的に示す。
tailコマンドとheadコマンドのフィルタリングにより、最終的に残るのは2〜6行のみとなる。

表. N=2、M=5で実行した場合(tail -n +2 | head -n -4)

行番号 処理1
tail -n +N
処理2(パイプ)
head -n -(M-1)
出力
1 消去 処理1で消去 消去
2
3
4
5
6
7 消去 消去
8 消去 消去
9 消去 消去
10 消去 消去