こんにちは、さるまりんです。
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
この文ですが、ラテン文字のアルファベットの文字を全て含むので、タイプライターの印字やキーボードの動作テストによく使われるものです。
読んでくださってありがとうございます。
それではまた!