エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説

      2020/07/27

Linuxコマンドの cat、tac、revの解説

 

tac、revコマンドは catの逆の処理を実行する

 
Linuxコマンドには似たような処理を実行できるコマンドがありますが、この記事ではファイルの内容を表示や結合を行う「cat」コマンドの逆の処理を行う「tac」コマンド、「rev」コマンドについて解説を行います。
 
catコマンドの詳しい使い方は下記に記事を書いていますのであわせて参考にしてください。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
 
 

catコマンドと tac、revコマンドの「逆」の違い

 

catコマンドの処理内容

 
「cat」コマンドはファイルの内容を表示する機能がありますので、非常によく使用するコマンドです。
「cat」コマンドを使用すると、下記の様にファイルの内容を表示することができます。
 

 
 
対して、「tac」「rev」は「cat」の逆の処理をするのですが、「逆」の内容が「tac」と「rev」で異なります。
 
 

tacコマンドの処理内容

 
まず「tac」。
「tac」はコマンド名も「cat」の逆なのですが、「tac」コマンドは下記の様に最終行から順番に表示します。
 

 
 

revコマンドの処理内容

 
「rev」は「cat」と同じく先頭行から順番に表示しますが、表示する文字の並びが行の末尾から逆に並び替えて表示を行います。
 

 
 

tacコマンドの基本的な使い方

 
tacは先にも紹介しましたが、ファイルの最終行から逆に表示を行います。
 

 
 
tacコマンドは catコマンドと同様の書式でファイルの結合を行うことができます。
 

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

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

 
 

tacコマンドの主なオプション

 
tacコマンドの主なオプションは以下の通りとなっています。
 

オプション 説明
-s、–separator 区切りに使う文字列を指定する(デフォルトは改行)
-r、–regex 区切り文字を正規表現として解釈する
-b、–before 区切り文字をレコードの後ではなく前に付ける

 
 

-sオプションで区切り文字を指定する

 
「-s」オプションを付けない場合は、改行を区切り文字として処理をしますが、「-s 区切り文字」のオプションを指定すると、指定した「区切り文字」で区切って並び替えを行います。
 

 
上記の「file_name8」は「,」を区切り文字として設定しているテキストですが、これに対して「-s ,」を指定すると、カンマで区切った文字列の順番が逆に並び替えられています。
(上記の例は「-s ,」の様に「-s」と「,」の間にスペースを入れていますが、「-s,」のようにスペースを入れなくても同様の動作をします。)
 
ただ「uvwxy」は行末にあるため改行が入ってしまっている点がやや残念です...
 
 
もし、「uvwxy」後の改行も処理してカンマ区切りの文字列の順番を逆にしたい場合は下記の様にすれば対応ができます。
 

 
もっとほかにいい方法があるようにも思いますが、下記の処理になっています。
 
最初の「tr」コマンドで「file_name8」を読み込み、「,」を改行に置換します。
「tac」コマンドで逆の順番に並び替えます。
「tr」コマンドで改行を「,」に戻します。
行末に「,」が付いているため「sed」コマンドで行末の「,」を削除します。
 
 
「sed」コマンドは文字列の置換や削除などの処理を行うときに使用するコマンドです。詳しくは下記に記事を書いていますので参考にしてください。
UNIX・Linuxの sedコマンドで特定の文字列を置換する方法
 
 

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

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

 
 
catコマンドの詳しい使い方は下記に記事を書いていますのであわせて参考にしてください。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
 
nlコマンドの詳しい使い方は下記に記事を書いていますのであわせて参考にしてください。
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
 
 

revコマンドの基本的な使い方

 
「rev」は「cat」と同じく先頭行から順番に表示しますが、表示する文字の並びが行の末尾から逆に並び替えて表示を行います。
 
「rev」は「reverse」の略です。
 
 

 
 
「rev」コマンドの活用場面を思い浮かべることはできませんでしたが、下記の様にすることで findで検索した結果のファイルを拡張子単位でソートをすることができます。
 

 
または、URLのトップレベルドメインで並び替えをするなど、文字列の最後の方の文字列でソートしたい場合などに活用できるのではないでしょうか。
 
 

revコマンドの主なオプション

 
revコマンドの主なオプションは以下の通りとなっています。
 

オプション 説明
-V、–version バージョンを表示する
-h、–help ヘルプを表示する

 
 
「rev」コマンドのオプションは、バージョン表示とヘルプの表示しかないようです。
そのため、機能的オプションは存在しないようです。
 
 
今回の記事では、「cat」「tac」「rev」の各コマンドについて解説をしましたが、ファイルの内容、および、テキスト情報についての操作に関連するコマンドは下記の記事にまとめていますので、あわせて参考にしてください。
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare

Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。

Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする

Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。

Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する

Linuxのhead、tailコマンドはファイルの先頭の一部、もしくは、末行の一部を表示するコマンド。行数や文字数で指定をする。tailはログを監視するためのオプションがある。

Linuxのマニュアルページ表示コマンドmanの解説
Linuxのマニュアルページ表示コマンドmanの解説

Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。

Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など

Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。

Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。

Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する

Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。

Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説

Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。

less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド

Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。

makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新

Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。