バイオインフォマティクスでは、大量のデータを効率的に処理するために、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.txt
と file2.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.txt
→ file1.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行」を取得するには tac
と sed
を組み合わせると便利です。
$ tac sample.txt | sed -n '1,3p'
これにより、sample.txt
の最後の 3 行だけを表示できます。
まとめ
tac
コマンドはシンプルながら、データを逆順に扱う ことでバイオインフォマティクスのデータ処理やログ解析に役立ちます。
今回学んだポイント
✅ tac
は cat
の逆で行を逆順に表示
✅ -s
オプションで任意の区切り文字で処理
✅ FASTAファイルの処理には awk
と組み合わせる
✅ ログ解析やデータの逆順ソートに活用可能
バイオインフォマティクスのデータ解析では、単純な操作でも強力なツールになりますよ〜!!tac
を活用し、データ処理の効率をアップさせていきましょう〜!