0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】改行コード

Last updated at Posted at 2025-03-10

経緯

環境でシェルスクリプトを実行した際にうまくいかず。先輩に相談したところただ改行コードが間違っていたためだと判明。悔しかったので、改行コードのエトセトラを備忘録として残すことにした。

改行コード_各OSの違い

どうやらOSによって基本とする改行コードは異なるらしい
以下関係を表にまとめる(表1)

 
表1.基本とする改行コード
改行コード OS 概要
LF UNIX系、macOS(X以降)、iOS、Android Linuxもこれ
CRLF Windows -
CR Mac OS 9以前 現在はメジャーでない

改行コード_正規表現

それぞれの改行コードを正規表現で表すと次のように表せる
置換の際に必要な知識のため、これも表にまとめる(表2)

 
表2.改行コード正規表現
改行コード 正規表現
LF \n
CRLF \r\n
CR \r

改行コード_確認方法

改行コードは様々な方法で確認できる
環境によっていくつか種類があるため、用途に応じて使い分ける

1. メモ帳で確認(windows11で確認)

メモ帳1 2024-09-28 174807.png
隣にはファイルの文字コードも確認できる
ただし、文字コードが混ざっている場合、メモ帳ではCRLFが混じっている場合そちらに統一されてしまうようだ
サクラ1 2024-09-28 180539.pngメモ帳2 2024-09-28 181111.png

注意
サクラエディタでは黄色枠=CRLF赤色枠=LFの区別がつくが、メモ帳ではWindowsの基本となるCRLFのに統一されてしまっている。設定いじれば判別できるようになるのだろうか。。

2. サクラエディタで確認

サクラエディタでは目視で改行コードを確認可能。(素晴らしい!!)
さらにカーソルを置いた行の改行コードもそれぞれ識別して表示してくれる。
スクリーンショット 2024-09-28 182849.png

3. Linuxコマンドで確認

いくつかのコマンドで確認することもできる
画像は改行コードを混ぜた場合の表示例

3-1. od -cコマンド

bash
od -c test.txt

image.png
実際のテキスト
image.png

3-2. fileコマンド

bash
file test.txt

image.png

3-3. nkf(Network Kanji Filter)コマンド

bash
 nkf --guess test.txt
  • LFのみの場合
    image.png
  • 混在の場合
    image.png

4.Vimで確認

vimエディタでは次のオプションを指定することで改行コードを確認できる

vim
:set fileformat?

画像は改行コードを混ぜた場合の表示例
image.png
unix=LF , dos=CRLF , mac=CRである(なぜか自分の環境では確認できなかった)

注意
Vimはファイル全体を通して複数の改行形式が混在している場合
もっとも優先度の高い形式に基づいてfileformatを設定する
優先度:LF > CRLF > CR

ちなみに^MはCRを含む改行形式(CRLF or CR)とLFを読み込むと表示される
CRLFかCRのみの場合は表示されない
ただしCRのみの場合は表示される(なんでや)
image.png
CRのみのファイルをvimで開く
image.png
なぜかfileformat=unixと表示される
この状態で保存するとdosになる(why?)
image.png
image.png

改行コード_変換方法

1. サクラエディタで変換

image.png
改行コード:CRLF 
CRLF, LF, CRが混在している

  • サクラエディタでは入力する改行コードの設定が変更できる
sakura
#設定 > 入力改行コード指定
  • ほかにも保存の際に改行コードを指定して保存できる
    image.pngimage.png
sakura
	#ショートカットキー: Shift+Ctrl+S

2. Linuxコマンドで変換

2-1.nkf(Network Kanji Filter) コマンド

bash
# 【入力ファイル】 を改行コード(LF)へ変換して上書きする
nkf -Lu --overwrite test.txt

image.png

オプション
-Lu : unix形式(LF)
-Lw : windows形式(CRLF)
-Lm : macintosh形式(CR)

2-2. iconvコマンドとtrコマンドの合わせ技

bash
# 【入力ファイル】 の 【入力文字コード】 を 【出力文字コード】 に、
# 改行コードCRLFを改行コードLFへ変換して 【出力ファイル】 へ出力する
iconv -f 入力文字コード -t 出力文字コード 入力ファイル | tr -d '\r' > 出力ファイル

注意
入力ファイルと出力ファイル同じにすると空ファイルになるため注意

image.png

参考

https://auroralights.jp/entry/2021/04/03/233553
https://qiita.com/bezeklik/items/aca37ffb127821311d6b
https://qiita.com/r18j21/items/78d8501888839b13c770
https://sakura-editor.github.io/help/HLP000062.html
https://sakura-editor.github.io/help/HLP000362.html
https://sakura-editor.github.io/help/HLP000285.html
https://qiita.com/waoooon/items/8d982e49692c8145ca4b
https://qiita.com/hogeo1234/items/76a1873ed4ab327254b5
https://qiita.com/ymm1x/items/b383fec5802f38079162
https://wakaru-web.com/device/line-feed-code/

まとめ

改行コードの確認・変換についてはサクラエディタが便利

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?