2026年8月28日

2026年8月28日

headコマンドでファイル先頭を表示する方法

はじめに

headはファイルの先頭部分を表示するコマンドで、tailの対になる存在です。大きなログファイルやCSVの構造を素早く確認したり、パイプの先頭でデータを絞り込んだりする際に重宝します。

シンプルですが、サーバー運用では「先頭だけ確認すれば十分」という場面が非常に多く、cat より head を使うべきケースが頻出します。

症状・背景

head が必要になる主な場面:

  • CSVやログファイルの構造(ヘッダー、フォーマット)を素早く確認したい
  • 巨大なファイルを誤ってcatして端末を固めるのを避けたい
  • パイプ処理で上位N件だけを取り出したい(sort + head の組み合わせ)
  • 設定ファイルの冒頭にあるバージョン情報やコメントだけを確認したい

手順・設定方法

ステップ1: 基本的な使い方

# 先頭10行を表示(デフォルト)
head /var/log/syslog

# 行数を指定(-n N または -N)
head -n 5 /etc/passwd
head -5 /etc/passwd

# 複数ファイルの先頭を表示(ヘッダー付き)
head /var/log/messages /var/log/syslog

ステップ2: 行数・バイト数の制御

# 末尾を除いて先頭から表示(負の値)
head -n -5 file.txt     # 末尾5行を除いた全行

# バイト数指定
head -c 100 binary.dat  # 先頭100バイト
head -c 1K file.txt     # 1キロバイト
head -c 1M file.bin     # 1メガバイト

# ヘッダー(ファイル名)を抑制
head -q file1.txt file2.txt

ステップ3: パイプとの組み合わせ

# アクセスログのIP上位10件
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# メモリ使用量上位5プロセス
ps aux --sort=-%mem | head -6   # ヘッダー1行+5プロセス

# ディスク使用量上位10ディレクトリ
du -sh /var/* 2>/dev/null | sort -rh | head -10

# 直近のログイン情報
last | head -20

ステップ4: 実践的な使い方

# CSVのヘッダーと最初の数行だけ確認
head -3 large_dataset.csv | column -t -s,

# テスト用にサンプルデータを生成
head -1000 huge.log > sample.log

# JSONファイルの構造プレビュー
head -50 api_response.json | jq .

# headとtailを組み合わせて特定範囲を抽出(10〜20行目)
head -n 20 file.txt | tail -n 11

# CPU情報の最初のコアだけ表示
head -25 /proc/cpuinfo

注意事項

  • head と tail を組み合わせる場合、行数の計算ミスでオフバイワンエラーになりやすい(tail -n +10 | head -n 11 が10〜20行目)
  • バイト指定 -c でマルチバイト文字を途中で切ると文字化けする
  • ストリーミング処理の場合、head -n N で指定行に達するとパイプ元プロセスがSIGPIPEで終了することがある(意図した挙動)
  • 巨大ファイルでも head は先頭しか読まないため高速

まとめ

1. 基本表示: head ファイル で先頭10行を表示

2. 行数指定: -n N で先頭N行、-n -N で末尾を除いた全行

3. バイト指定: -c N でNバイト分のみ表示(K/M単位も可)

4. 複数ファイル: 引数に並べると各ファイル先頭をヘッダー付きで表示

5. パイプ連携: sort | head で上位N件抽出が定番

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ