【tac】bash/シェルスクリプトマニアックコマンドあれこれ1

tacコマンド

tac コマンドはファイルの内容を逆順に出力するコマンドです。
最後の行が最初に表示されます。

tac という言葉は、cat という言葉の逆です。
tacコマンドの機能も、catコマンドの逆です。

通常のcatコマンドの実行結果

$ cat thegeekstuff.txt
1. Linux Sysadmin, Scripting etc.,
2. Databases Oracle, mySQL etc.,
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10. Windows Sysadmin, reboot etc.,
11. Adding 1's and 0's

tac コマンドの実行結果

$ tac thegeekstuff.txt
11. Adding 1's and 0's
10. Windows Sysadmin, reboot etc.,
9. Software Development
8. Website Design
7. Productivity (Too many technologies to explore, not much time available)
6. Cool gadgets and websites
5. Storage
4. Security (Firewall, Network, Online Security etc)
3. Hardware
2. Databases Oracle, mySQL etc.,
1. Linux Sysadmin, Scripting etc.,

単語を逆順に並べるには

-s というオプションで区切り文字を指定できるので、行ではなく単語を逆順に並べることもできる。

$ echo -n "I'm feeling lucky." | tac -s ' '
lucky.feeling I'm 

さらに -r というオプションを使えば正規表現で区切り文字を指定できる。

$ echo -n "I'm feeling lucky." | tac -r -s '[^a-zA-Z]'
lucky.feeling m I'

catコマンドと同様の書式でファイルの結合

2つのファイルがあります。

$ cat file_name1
abcde
fghij
klmno
$ cat file_name2
pqrst
uvwxy
z1234

2つのファイルをtacで結合すると以下の通りになります。

$ tac file_name1 file_name2
klmno
fghij
abcde
z1234
uvwxy
pqrst

tacでファイルを結合する場合は、各ファイルごとに最終行から逆に並べ替えた上で結合を行います。
 
このときの結果は、下記の様に catで結合した上で tacコマンドで並び替えたときの結果とは異なります。

$ cat file_name1 file_name2 | tac
z1234
uvwxy
pqrst
klmno
fghij
abcde
ヒント
どちらでも良いのではなく、後者を覚えましょう。

結合したファイルをファイルに出力

また、結合したファイルをファイルに出力する場合は、リダイレクトを使用します。

$ cat file_name1 file_name2 | tac > file_name3

こうすると、実行内容を画面に表示しながらファイルに出力できますね。

$ cat file_name1 file_name2 | tac | tee file_name3

tacコマンドには行番号を表示するオプションがない

catコマンドには行番号を表示する「-n」オプションがありますが、「tac」コマンドにはこれに類似するオプションはありません。
 
そのため、行番号を表示する場合は、下記の様に catコマンドか、nlコマンドを併用します。

cat -n または、nl こまんどで行番号を振ります!

$ tac file_name1 | cat -n
$ tac file_name1 | nl

書籍の紹介

【rev】bash/シェルスクリプトマニアックコマンドあれこれ2

【rev】bash/シェルスクリプトマニアックコマンドあれこれ2

【名著紹介】「UNIXという考え方」ご紹介

【名著紹介】「UNIXという考え方」ご紹介