Macでファイルの改行コードが何かを調べる方法

こんにちは、さるまりんです。

3つのファイルがあります。内容はこんな感じです。

crlf.txt lf.txt cr.txt

The
quick
brown
fox
jumps
over
the
lazy
dog

違いは改行コードです。

ファイル名で想像つくと思いますが、crlf.txtCR(キャリッジリターン)とLF(ラインフィード)、lf.txtLFのみ、cr.txtCRのみです。それぞれのファイルがどの改行コードを使っているかは見た目でわからないので調べてみます。

macOSで

fileコマンドでやってみます。

普段使っているmacOSのターミナルでそれぞれのファイルに対して実行してみました。

% file crlf.txt 
crlf.txt: ASCII text, with CRLF line terminators
% file lf.txt
lf.txt: ASCII text
% file cr.tx
cr.tx: ASCII text, with CR line terminators

lf.txtの結果以外はwith 〇〇 line terminatorsと行末に何の文字があるかを表示してくれています。

次はcatコマンドでやってみます。

catコマンドに-eオプション、もしくは-vオプションをつけて表示されない文字を確認することができ、オプション付きで実行するとCR^Mと表示されます。-e-vの違いは、-eは行末(LFがある場所)に$の文字をつけて表示します。

cat -eの出力です。

% cat -e crlf.txt 
The^M$
quick^M$
brown^M$
fox^M$
jumps^M$
over^M$
the^M$
lazy^M$
dog^M$
% cat -e lf.txt
The$
quick$
brown$
fox$
jumps$
over$
the$
lazy$
dog$
% cat -e cr.txt
The^Mquick^Mbrown^Mfox^Mjumps^Mover^Mthe^Mlazy^Mdog^M

目で見えるとわかりやすいですね。

Linuxでも

fileコマンドやcatコマンドはLinuxでも同じように使えます。

Amazon Linux 2上でもやってみました。

fileコマンド

$ file crlf.txt 
crlf.txt: ASCII text, with CRLF line terminators
$ file lf.txt 
lf.txt: ASCII text
$ file cr.txt 
cr.txt: ASCII text, with CR line terminators

cat -eコマンド

$ cat -e crlf.txt 
The^M$
quick^M$
brown^M$
fox^M$
jumps^M$
over^M$
the^M$
lazy^M$
dog^M$
$ cat -e lf.txt 
The$
quick$
brown$
fox$
jumps$
over$
the$
lazy$
dog$
$ cat -e cr.txt 
The^Mquick^Mbrown^Mfox^Mjumps^Mover^Mthe^Mlazy^Mdog^M

もらったファイルの改行コードがわからない。結構あります。改行コード指定のファイルを作って渡す前に確認するのもこれでできます。ちょっとしたことですが知ってたら便利かな。

ちなみに

The quick brown fox jumps over the lazy dog

この文ですが、ラテン文字のアルファベットの文字を全て含むので、タイプライターの印字やキーボードの動作テストによく使われるものです。

読んでくださってありがとうございます。

それではまた!