CRLF, CR, LFとは
CRLF、CR、LFは、テキストファイルにおける「改行コード(改行文字)」の種類であり、テキストの「行の終わり」を示す制御コード
各改行コードの説明
1. CR (Carriage Return)
-
制御コード:
\r
(ASCII: 13, 0x0D) - 意味: 「キャリッジリターン」
- 動作: カーソルを行の先頭に戻す(横方向の移動)
- 主な使用環境: 古いMac OS(Mac OS 9以前)
2. LF (Line Feed)
-
制御コード:
\n
(ASCII: 10, 0x0A) - 意味: 「ラインフィード」
- 動作: 次の行へ移動(縦方向の移動)
- 主な使用環境: UNIX系OS(Linux, macOS)
3. CRLF (Carriage Return + Line Feed)
-
制御コード:
\r\n
(ASCII: 13 10, 0x0D 0x0A) - 意味: 「キャリッジリターン」+「ラインフィード」
- 動作: カーソルを行の先頭に戻し(CR)、次の行へ移動(LF)
- 主な使用環境: Windows
改行コードの関係性
改行コード | 制御コード | ASCIIコード | 主な環境 |
---|---|---|---|
CR | \r |
13 (0x0D) | 古いMac OS (Mac OS 9以前) |
LF | \n |
10 (0x0A) | UNIX系OS (Linux, macOS) |
CRLF | \r\n |
13 10 (0x0D 0x0A) | Windows |
補足
^M
とは
^M
の意味
-
^M
は CR(キャリッジリターン,\r
) を表す。 - Linux/macOSで WindowsのCRLF形式のファイルを開いた際に表示される。
-
キャレット記法 (
^X
) で制御文字を可視化する。-
^M
→ CR(キャリッジリターン, ASCII 13) -
^J
→ LF(ラインフィード, ASCII 10)
-
なぜ ^M
が表示されるのか?
-
Windows: 改行コード
\r\n
(CRLF) -
Linux/macOS: 改行コード
\n
(LF) - WindowsのCRが Linuxで不要な制御文字として
^M
と表示 される。
改行コードの違いによる影響
- WindowsのCRLFをLinuxで開くと
^M
が表示される - LinuxのLFのみのファイルをWindowsで開くと改行が適切に認識されないことがある
^M
の削除方法
1. sed
コマンド
$ sed -i 's/\r//g' file.txt
$ tr -d '\r' < file1.txt
$ sed -i 's/^M//g' file.txt
$ tr -d '^M' < file1.txt