Linuxのtacコマンドとは?ファイルの内容を逆順に表示する方法と活用例

Linuxでログファイルやデータの末尾から順に確認したいとき、「tail」や「less」などのコマンドを使っていませんか?
しかし、ファイル全体を行単位で完全に逆順に表示したいなら、「tac」コマンドが非常に便利です。
本記事では、tacコマンドの基本的な使い方から、実践的な使用例、オプションの活用法まで、初心者にもわかりやすく解説します。
ログ調査やデータ確認を効率化したい方は、ぜひチェックしてみてください。


tacコマンドとは?基本の機能を紹介

「tac」は、「cat(キャット)」を逆から読んだコマンド名の通り、ファイルの内容を「行単位で」逆順に表示するLinuxの標準コマンドです。
通常のcatコマンドが、ファイルの中身をそのまま表示するのに対し、tacは最後の行から順に表示してくれるのが最大の特長です。

tac ファイル名

この1行で、対象ファイルの内容を一番最後の行から表示してくれます。ログファイルや履歴データなど、新しい情報が下に追加されていくファイルをさかのぼって読むのに最適です。


tacの使い方:基本的な構文と実行例

基本の構文

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

もっとも基本的な使い方は、ファイル名を指定するだけです。

実行例

たとえば、以下のような内容を持つ「sample.txt」ファイルがあるとします。

りんご
みかん
バナナ
メロン

このファイルに対して以下のコマンドを実行します。

tac sample.txt

結果はこのようになります:

メロン
バナナ
みかん
りんご

行単位で、下から上へ順番に表示されているのがわかります。


tacとcatの違い

一見似ているtacとcatですが、用途と出力内容が大きく異なります。

コマンド説明
catファイルを上から順に表示
tacファイルを下から逆順に表示

catは編集された順番通りに読みたいとき、tacは最近の情報から遡って確認したいときに使うのが一般的です。


複数ファイルへの対応:tacはどう表示する?

tacは複数ファイルにも対応していますが、ファイル単位でも逆順になります。

たとえば、次のように2つのファイルを指定します。

tac file1.txt file2.txt

この場合、まず「file2.txt」の内容が逆順で表示され、その後に「file1.txt」の内容が逆順で表示されます。
ファイル間の順番も逆になる点に注意が必要です。


オプション解説:tacの便利な使い方

tacにはいくつか便利なオプションが用意されています。以下に代表的なものを紹介します。

1. -s(–separator)区切り文字の変更

tacのデフォルトでは、行の区切りを「改行文字(\n)」と見なしています
この挙動を変えたい場合は -s オプションを使って、任意の区切り文字を指定できます。

例:カンマ区切りで逆順に並び替える

echo "a,b,c,d" | tac -s,

結果:

d
c
b
a

このように、改行以外の区切りで逆順処理をしたいときに役立ちます。


tacの使用例:実務での活用シーン

1. ログファイルの調査

ログファイルは基本的に新しい情報が下に追記されるため、tacで逆から読むと、最新の情報をすぐにチェックできます。

tac /var/log/syslog | less

このようにlessと組み合わせることで、スクロールしながら直近のログ内容を確認するのに便利です。

2. エラーログの逆参照

たとえば、Webサーバーのエラーログ:

tac /var/log/httpd/error_log | grep "500"

とすることで、**HTTPステータスコード500(内部サーバーエラー)**が直近でいつ発生したか、すぐに確認できます。


tacを使ったスクリプトの作成例

以下は、指定されたログファイルを逆順で出力し、5行だけ表示するスクリプト例です。

#!/bin/bash

LOGFILE=$1

if [ -f "$LOGFILE" ]; then
tac "$LOGFILE" | head -n 5
else
echo "ファイルが存在しません: $LOGFILE"
fi

このスクリプトは、使いたいログファイルを引数にして実行すると、最新5件の情報を逆順で表示してくれます。


tacが使えない環境での代替方法

一部の環境(古いUNIX系や限定シェル)ではtacがインストールされていない場合もあります。そのような場合は、awkやperlを使って類似の結果を得ることができます。

awkで逆順出力

awk '{ lines[NR] = $0 } END { for (i = NR; i > 0; i--) print lines[i] }' ファイル名

これはtacと同様に行単位で逆順出力するawkワンライナーです。


まとめ:tacはログ解析の強力な味方

tacコマンドは、シンプルながら非常に強力なツールです。特にログファイルや時系列データを扱うときには、

  • 最新の情報から調査を始めたい
  • ファイル全体を逆から見て傾向を把握したい
  • grepやlessなどと組み合わせて効率的に調査したい

といったニーズにぴったりです。tacを使いこなすことで、日々の作業効率がぐっと上がります。
まだ使ったことがない方は、ぜひ一度お手元のLinux環境で試してみてください。

タイトルとURLをコピーしました