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