【bash】catコマンドを見直してみた。

※アフィリエイト広告を利用しています
※アフィリエイト広告を利用しています

catコマンドとは

説明が不要かもですが、そもそもcatコマンドは

ファイルを連結または表示します

というコマンドです。
ファイルを参照したり連携させたりするのに使います。

以降では下のsample.txtを例にします。(3、4行目は空行、5行目の頭にタブが入っている)
■sample.txt

1行目です。
2行目です。


5行目です。

基本的な使い方

ファイルの内容を標準出力(ターミナル)に表示します。

出力例:


cat コマンドのオプション

コマンド説明
cat -n行番号を付けて表示
cat -bテキスト行のみに行番号を表示
cat -s連続した空行を1行にまとめて
cat -Tタブを^I(i)で表示する
cat -v制御文字を可視化
cat -E行末の改行を $ で表示
cat -A-vTEと同様

行番号を表示する:-n

各行の先頭に行番号を付けて表示します。

出力例:


空行を除いて行番号を表示する:-b

空白行には番号を付けず、テキスト行のみに行番号を表示します。

出力例:


連続した空行を1行にまとめる:-s

連続した空行を1行にまとめて表示します。

出力例:3,4行目がまとめて1行の空行になります


タブを可視化する -T

タブを ^I で表示します。

出力例:


改行や特殊文字を可視化する:-v-E

  • -v:制御文字を可視化(例:^M など。^Mについては後述)
  • -E:行末の改行を $ で表示

出力例:

改行や特殊文字、タブを可視化する:-A

-v、-V、-Tを指定したものと同等で、制御構文、改行、タブを可視化します。

出力例:


参照以外の使い方

ファイルの結合

file1.txt と file2.txt を結合し、新しい merged.txt を作成します。
splitコマンドで分割したファイルもこれで結合できます。
(splitコマンドについては後日まとめてみます)


テキストの追加(リダイレクト)

newfile.txt を作成し、EOF を入力するまでに入力したテキストを書き込みます。


既存ファイルに追記

additional.txt の内容を sample.txt に追加します。
sample.txt の後ろにadditional.txtの内容が追記されます。


cat と tac(逆順表示)

通常 cat はファイルを上から表示しますが、tac を使うと逆順に表示できます。

出力例:


^M ってなんだ?

^M は、制御文字(Control Character)の一種で、キャリッジリターン(Carriage Return, CR) を意味します。ざっくりと改行コードです。

主に Windows と UNIX/Linux の改行コードの違い によって発生します。
Windows では CRLF (\r\n) が改行として使われますが、UNIX 系の環境では LF (\n) のみを使用します。そのため、Windows で作成したファイルを Linux で開くと、不要な CR (\r) が残り、それが ^M として表示されます。

OS改行コード
Linux / macOSLF (\n)
WindowsCRLF (\r\n)

確認する方法として、cat -v などでファイル内にある CR を ^M として表示することがあります。


コメント

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