tac - ファイルの内容を逆順で表示する

tacコマンドは、ファイルの内容を逆順で表示することができます。
また、オプションを用いれば、ファイルのすべての文字を逆順で表示することができます。

tacコマンドとは

tacコマンドとは、catコマンドとはファイルの内容を逆順で表示するという意味で逆のコマンドです。
つまり、catコマンドがファイルの内容を上から下へ表示してくれるに対して、tacコマンドはファイルの内容を下から上へ表示します。
また、オプションを用いるとすべての文字に対して、逆順で表示させることもできます。

tacコマンドの構文

オプション:0個以上のオプションをつけることができます。

入力ファイル:0個以上の入力ファイルを指定できます。入力ファイルがない、または「-」ならば、標準入力が指定されます。

tacコマンドのオプション

区切り文字を変更
(-sオプション)

tacコマンドのデフォルトの区切り文字は、改行です。
tacコマンドは、ファイルを表示するときに、区切り文字が現れる順番とは逆順で表示します。

つまり、オプションがない状態でtacコマンドを実行すると、改行文字が現れるのと逆順で表示することでファイルの内容を逆順で表示することができます。

-sオプションで、区切り文字を変更することで表示方法を変更することができます。
コマンド例

tacopt.txt

実行結果

これは、tacopt.txtが「l」を区切り文字として、8つの部分に分けられます。
列挙すると、
「appl」
「e appl」
「e appl」
「e\nappl」
「e appl」
「e onion\nappl」
「e appl」
「e yuzu\n
となります。また、明示的に改行文字は\nで表しています。
そして、この列挙をしたものを逆順に読むと、実行結果のようになるでしょう。もちろん、実行結果の最後の部分は、改行文字も表示されません。

区切り文字に正規表現を使用
(-rオプション)

-rオプションは区切り文字に正規表現を用いることができます。

区切り文字を手前に表示
(-bオプション)

-bオプションは、区切り文字を手前に表示します。
デフォルトでは、区切り文字は最後になるように分けられます。
-bオプションをつけると、区切り文字が最初に来るように分けられます。

コマンド例

tacopt.txt

実行結果

これは、以下のように分けられます。また、明示的に改行文字は\nで表しています。
「app」
「le app」
「le app」
「le\napp」
「le app」
「le onion\napp」
「le app」
「le yuzu\n

分け方を見ると、区切り文字である「l」が最初に来るように分けられます。
また、-sオプションの例を見ると最後に区切り文字である「l」が来るように分けられています。
この列挙をしたものを逆順に読むと、実行結果のようになります。

tacコマンドの利用例

ファイルの内容を逆順で表示

tacコマンドは普通に用いるとファイルの内容を逆順で表示します。

コマンド例

test.txt

実行結果

ファイルの文字を逆順で表示

tacコマンドは区切り文字に正規表現を使用可能にする-rオプションと区切り文字を変更する-sオプションを組み合わせることで、ファイルの文字を逆順で表示することができる。

コマンド例

test.txt

実行結果

正規表現「a\|[^a]」は任意のすべての文字を表します。
具体的には、aもしくはa以外の文字のどちらかにマッチするという意味になり、つまり、任意の文字にマッチする場合となります。
また、この正規表現は「b\|[^b]」でも「c\|[^c]」でも同じ意味になります。
「\|」は正規表現「|」(OR)をエスケープシーケンスしたものです。
最初の空行は、test.txtの3行目の「テスト用です」という行の末尾の改行文字です。
実際には、実行結果の終端に改行文字がありません。

参考

外部リンクGnu Coreutils

外部リンクGnu Coreutils日本語版