Linuxコマンド〜逆順表示「tac」の使い方

スポンサーリンク

バイオインフォマティクスでは、大量のデータを効率的に処理するために、Linuxの基本コマンドを活用する機会が多くあります。中でも、テキストデータを扱う機会が多い研究者にとって、GNU coreutils に含まれるコマンドは欠かせません。

今回は、ファイルの行を逆順に表示する「tac」コマンドについて、その基本的な使い方から応用例まで詳しく解説します。


1. tac コマンドとは?

cat コマンドがファイルをそのまま表示するのに対し、tac はファイルの行を逆順に表示する コマンドです。

cat と tac の違い

例えば、次のようなファイル sample.txt があるとします。

$ cat sample.txt
A
B
C
D

通常の cat で表示すると、そのまま出力されます。

$ cat sample.txt
A
B
C
D

一方、tac を使うと以下のように行が逆順 で表示されます。

$ tac sample.txt
D
C
B
A

このように、tac行単位で処理し、最終行から先頭行に向かって表示します。


2. tac の基本的な使い方

(1) 単純な逆順表示

最も基本的な使い方は、ファイルの内容を逆順に表示することです。

$ tac ファイル名

例:

$ tac sample.txt
D
C
B
A

(2) 複数のファイルを逆順表示

複数のファイルを指定すると、それぞれのファイルが逆順に処理され、その後、ファイルの順序自体も逆になります。

例として、file1.txtfile2.txt の内容が以下のようになっているとします。

$ cat file1.txt
1A
1B
1C

$ cat file2.txt
2A
2B
2C

これを tac で処理すると、

$ tac file1.txt file2.txt
2C
2B
2A
1C
1B
1A

file2.txtfile1.txt の順に処理され、それぞれの行は逆順に出力 されます。

(3) -s オプションで区切り文字を指定

-s オプションを使うと、行の区切りを指定することができます。デフォルトでは \n (改行) が区切りですが、任意の文字を指定できます。

例えば、カンマ (,) で区切られたデータ comma_separated.txt があるとします。

$ cat comma_separated.txt
A,B,C,D

これを tac -s "," で処理すると、

$ tac -s "," comma_separated.txt
D
C
B
A

このように、カンマ区切りのデータを要素単位で逆順にすることができます。


3. tac の応用例

バイオインフォマティクスの分野では、ゲノムデータの解析や大規模なログファイルの処理に tac を活用できます。以下、具体的なユースケースを見ていきましょう。

(1) FASTA ファイルの逆順表示

FASTAファイルは、DNAやタンパク質の配列を格納するファイル形式です。通常、以下のような構造をしています。

$ cat sequence.fasta
>seq1
ATGCGT
>seq2
GCTAGC

このファイルを tac で処理すると、

$ tac sequence.fasta
GCTAGC
>seq2
ATGCGT
>seq1

FASTA形式では、> から始まる行が配列の識別子で、その下に塩基配列が記載されています。単純に tac を適用すると、識別子と配列の対応が崩れてしまう ため、以下のように awk と組み合わせると適切に逆順にできます。

$ awk '/^>/{if (seq) print seq; print; seq=""; next} {seq=seq $0} END{print seq}' sequence.fasta | tac

これにより、FASTAのエントリ単位で逆順に なります。


(2) ログファイルの最新行から順に表示

ログファイルでは、新しいデータがファイルの末尾に追加 されるため、最新のエントリを先に見たいことがよくあります。

例えば、以下のようなログ access.log があるとします。

$ cat access.log
[2024-01-01 10:00:00] User A logged in
[2024-01-01 10:05:00] User B logged in
[2024-01-01 10:10:00] User C logged in

tac を使うと、新しいログエントリを先に確認 できます。

$ tac access.log
[2024-01-01 10:10:00] User C logged in
[2024-01-01 10:05:00] User B logged in
[2024-01-01 10:00:00] User A logged in

これは、tail コマンド (tail -n 10 filename) のようにログの最新情報を即座に確認 する際に便利です。


(3) tac + sed で「最後のN行」を表示

head コマンドでは「最初のN行」を取得できますが、「最後のN行」を取得するには tacsed を組み合わせると便利です。

$ tac sample.txt | sed -n '1,3p'

これにより、sample.txt の最後の 3 行だけを表示できます。


まとめ

tac コマンドはシンプルながら、データを逆順に扱う ことでバイオインフォマティクスのデータ処理やログ解析に役立ちます。

今回学んだポイント

taccat の逆で行を逆順に表示
-s オプションで任意の区切り文字で処理
✅ FASTAファイルの処理には awk と組み合わせる
✅ ログ解析やデータの逆順ソートに活用可能

バイオインフォマティクスのデータ解析では、単純な操作でも強力なツールになりますよ〜!!tac を活用し、データ処理の効率をアップさせていきましょう〜!

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