こんにちは、さるまりんです。
3つのファイルがあります。内容はこんな感じです。
crlf.txt lf.txt cr.txt
The
quick
brown
fox
jumps
over
the
lazy
dog
違いは改行コードです。
ファイル名で想像つくと思いますが、crlf.txtがCR(キャリッジリターン)とLF(ラインフィード)、lf.txtがLFのみ、cr.txtがCRのみです。それぞれのファイルがどの改行コードを使っているかは見た目でわからないので調べてみます。
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
この文ですが、ラテン文字のアルファベットの文字を全て含むので、タイプライターの印字やキーボードの動作テストによく使われるものです。
読んでくださってありがとうございます。
それではまた!