head と tail |
作成日:2015-05-10 最終更新日: |
head と tail は Unix 系のコマンドであり、cat の兄貴分ともいえる。
head は先頭の行から指定された行数を表示する。 tail は末尾の行から指定された行数を表示する。
head, tail とも行数の指定がなければ 10 と解される。
よく使っていたのは、ログファイルに対して % tail -f logfile という -f オプションだった。 これで、絶えず更新されるログファイルを監視していた。
では、行数に対応した元素の名前が書いてあるテキスト 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 の指定方法は独特で、汎用性に欠けるのが残念だ。vi 系のエディタを使っている人だったらなじむだろう。
% sed -n '10,18p' atoms.txt
% awk '10 <= NR && NR <= 18{print}' atoms.txt
ここで、NR は現在読み込んでいるレコードの番号である。
まりんきょ学問所 > コンピュータの部屋 > UNIX 手習い > head と tail