【Linux】catコマンド

2019年3月11日

Linuxでは、テキストデータを処理するコマンドが多数あります。今回は、テキストデータの表示やファイルの連結するのに使う「cat」コマンドについてまとめています。

catコマンド

catコマンドは、ファイルの内容を標準出力に出力します。

複数のファイルを指定すると、指定したファイルの内容を連続して表示します。

形式
cat [オプション] [ファイルパス]...n
オプション
オプション 説明
-n 出力結果に行番号を付加する
[root@hostname /]#
cat foo.txt bar.txt 
foo.txtとbar.txtの内容を表示する
[root@hostname /]#
cat foo.txt > bar.txt 
foo.txtの内容をbar.txtに保存する

catコマンドは、ファイル名を指定しないと標準入力のデータ読み取って出力します。[Ctrl] + [d]で終了します。

[root@hostname /]#
cat 
hello world  標準入力から入力

hello world  標準出力から出力
linux     標準入力から入力

linux     標準出力から出力

[Ctrl] + [d]  入力を終了
[root@hostname /]#

catとリダイレクションを利用してファイルを作成することも出来ます。

cat > ファイル名 標準入力の内容を指定ファイルに保存する

但し、[Enter]を押したら入力した内容の修正は出来ません。

複数のファイルを連結して1つのファイルにまとめることも出来ます。

cat file1.txt file2.txt > file3.txt
cat 複数ファイルを連結

nlコマンド

nlコマンドは、ファイルの内容に行番号を付加して表示します。

形式
nl [オプション] [ファイルパス]
オプション
オプション 説明
-b 形式 指定した形式で本文に行番号を付加する
-h 形式 指定した形式でヘッダに行番号を付加する
-f 形式 指定した形式でフッタに行番号を付加する
形式
形式 説明
a 全ての行
t 空白以外の行
n 行番号の付加を中止する

「cat -n」コマンドでも行番号を付加することもできますが、nlコマンドとの違いは、空白行の取り扱いになります。「cat -n」では、空白行も含めて行番号を付加しますが、nlコマンドでは、デフォルトでは、空白を除いた行に番号を付加します。「nl -b」の形式に「a」を指定すれば「cat -n」と同じことが出来ます。

tacコマンド

tacコマンドは、ファイルの内容を最後の行から表示します。

形式
tac [オプション] [ファイルパス]...n
オプション
オプション 説明
-s 区切り文字 指定した文字列を区切り文字として使用する(デフォルトは改行文字)
-r 正規表現で区切り文字を指定する(sオプションと併用する)
-b 区切り文字を行の先頭に付ける
[root@hostname /]#
cat file1.txt 
hello world
linux
[root@hostname /]#
tac file1.txt ← 逆順で表示
linux
hello world