head と tail

作成日:2015-05-10
最終更新日:

head と tail

head と tail は Unix 系のコマンドであり、cat の兄貴分ともいえる。

head と tail の

head は先頭の行から指定された行数を表示する。 tail は末尾の行から指定された行数を表示する。

head, tail とも行数の指定がなければ 10 と解される。

tail の使い方

よく使っていたのは、ログファイルに対して % tail -f logfile という -f オプションだった。 これで、絶えず更新されるログファイルを監視していた。

head と tail の組み合わせ

では、行数に対応した元素の名前が書いてあるテキスト atoms.txt があったとする。10 行めから 18 行めを表示するにはどうすればよいだろうか。 念のため、行数、すなわち元素番号も書いておく。(10 行めは Ne, 18 行めは Ar でどちらも不活性ガスである)。

 1 H
 2 He
 3 Li
 4 Be
 5 B
 6 C
 7 N
 8 O
 9 F
10 Ne
11 Na
12 Mg
13 Al
14 Si
15 P
16 S
17 Cl
18 Ar
19 K
20 Ca

一つ考えられるのは、まず head で最初から 18 行までを表示し、tail でその後末尾の 9 行を表示する、という方法である。 10 行から始まり 18 行で終わるということは、合わせて 9 行あることに注意する。

% head -n 18 atoms.txt | tail -n 9

sed を使う方法

sed を使う手がある。ただし、sed の指定方法は独特で、汎用性に欠けるのが残念だ。vi 系のエディタを使っている人だったらなじむだろう。

% sed -n '10,18p' atoms.txt

awk を使う方法

% awk '10 <= NR && NR <= 18{print}' atoms.txt
ここで、NR は現在読み込んでいるレコードの番号である。

まりんきょ学問所コンピュータの部屋UNIX 手習い > head と tail


MARUYAMA Satosi