【Linux】catコマンドでファイル内容の表示・結合・加工を効率化する方法

目次

概要

cat(concatenate)コマンドは、ファイルの内容を標準出力に表示したり、複数のファイルを一つに結合したりするために使用される、Linuxで最も基本的なコマンドの一つです。単に中身を確認するだけでなく、パイプラインやリダイレクトと組み合わせることで、ログ解析やドキュメント作成の補助として非常に強力な威力を発揮します。

仕様(引数・オプション)

構文

cat [オプション] [ファイル名...]

主要なオプション

オプション説明
-nすべての行に行番号を付与して出力します。
-b空行を除いた行にのみ行番号を付与して出力します。
-E各行の末尾に「$」を表示し、行の終わりを可視化します。
-s連続した空行を1行にまとめて出力します。
-Tタブ文字を「^I」として表示し、不可視文字を可視化します。

基本の使い方

サーバーのアクセスログの冒頭部分を素早く確認する手順です。

BASH

# アプリケーションのアクセスログを表示し、最初の5行のみを抽出
cat /var/log/web-app/access.log | head -n 5

TEXT

192.168.1.10 - mori [26/Jan/2026:14:00:01 +0900] "GET /index.html HTTP/1.1" 200
192.168.1.11 - guest [26/Jan/2026:14:00:05 +0900] "GET /css/style.css HTTP/1.1" 200
192.168.1.10 - mori [26/Jan/2026:14:00:10 +0900] "POST /api/login HTTP/1.1" 200
192.168.1.12 - admin [26/Jan/2026:14:01:00 +0900] "GET /admin/config HTTP/1.1" 403
192.168.1.10 - mori [26/Jan/2026:14:01:05 +0900] "GET /favicon.ico HTTP/1.1" 404

実践コマンド

圧縮された過去のログアーカイブと、現在のログファイルを連結して一つの調査用ファイルを作成する実用的なパイプライン処理です。

BASH

# 行番号を付与してログを表示
cat -n /var/log/web-app/error.log | head -n 5

# zcatで解凍した古いログと現在のログを結合し、一時ファイルに出力
# 「-」は標準入力を受け取る位置を指定する特別な引数
zcat /var/log/web-app/error.log.1.gz | \
cat - /var/log/web-app/error.log \
> /tmp/mori_combined_log.txt

TEXT

     1  [2026-01-26 10:00:00] ERROR: Connection timeout from 10.0.0.5
     2  [2026-01-26 10:05:22] WARN: Resource spike detected
     3  [2026-01-26 10:10:45] ERROR: Invalid authentication for user: mori
     4  [2026-01-26 10:12:01] INFO: Background worker started
     5  [2026-01-26 10:15:30] ERROR: Database connection failed

カスタムポイント

  • ファイルパス: /var/log/web-app/ などのパスは、実際に解析したいログが配置されているディレクトリに変更してください。
  • 出力先: /tmp/mori_combined_log.txt は一時的なファイル名です。永続化が必要な場合は適切な保存先に変更してください。
  • 表示範囲: head -n 5 の数値を変更することで、表示する行数を任意に調整できます。

注意点

  1. 巨大なファイル: 数GBを超えるような巨大なファイルをcatでそのまま表示しようとすると、端末の制御が困難になったりメモリを圧迫したりするため、less などのページャーを検討してください。
  2. 実行権限: システムログなどの閲覧には sudo 権限が必要になる場合があります。
  3. バイナリファイル: 画像や実行バイナリをcatで出力すると、端末の表示が崩れたりビープ音が鳴り続けたりすることがあるため、対象がテキストであることを確認してください。

応用

ヒアドキュメントを利用して設定ファイルを即座に作成する例や、既存のファイルの間にメッセージを挿入する手法です。

BASH

# ヒアドキュメントで mori ユーザー用のメモを作成
cat - << EOF > /tmp/mori_task.txt
Task: Log analysis for project X
Date: 2026-01-26
Assignee: mori
EOF

# 2つのファイル A と B の間に、境界線(標準入力)を挿入して結合出力
# a.txt と b.txt は事前に作成されているものとする
echo "------- SEPARATOR -------" | cat /tmp/mori_task.txt - /tmp/app_info.txt

TEXT

Task: Log analysis for project X
Date: 2026-01-26
Assignee: mori
------- SEPARATOR -------
Application Version: 2.4.5
Status: Running

まとめ

catコマンドは単なるファイル閲覧ツールに留まらず、標準入力を意味する「-」を活用したファイルの連結や、ヒアドキュメントによるテキスト生成など、Linux操作の柔軟性を支える重要な役割を担っています。特に大規模なログ調査においては、圧縮ファイルを扱うコマンドと組み合わせてストリーム処理を行うことで、ディスク容量を節約しながら効率的なデータ解析が可能になります。本手順で示したように、適切なオプションとリダイレクトを組み合わせることが、正確かつ迅速なシステム運用を実現するためのポイントです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次