Linuxでファイルの改行コードLF⇔CRLFを変換する方法

linux-lf-crlf
  • URLをコピーしました!

前回、Linuxで文字コードがUTF-8のファイルに対して、BOM付き⇔BOMなしを変換する方法をご紹介しました。
今回は、改行コードLFCRLF変換する方法をご紹介します!

あわせて読みたい
UTF-8のBOM付きとBOMなしを変換する方法(Linux) 最近ではあまり意識しなくなりましたが、UTFー8にはBOM(byte order mark)という厄介な存在があります。今回は、LinuxでこのBOMを付けたり外したりする方法をご紹介しま...
目次

3つの改行コード

面倒なことに、OSによって改行コードが異なります。

LF: UNIXやUnix系のシステム。Linux、AIX、Xenix、macOS、BeOS、Amiga、RISC OSなど。
CR+LF: CP/M、MP/M、MS-DOS、OS/2、Microsoft Windows。
CR: コモドールによるシステム、Apple IIファミリ、Mac OS(バージョン9まで)、OS-9。

改行コード – Wikipedia

普段からよく使う改行コードは、LinuxLFWindowCRLFです。
利用するシステムによっては、これらの改行コードの違いが邪魔して、動かなかったりします。
そこで、LFからCRLF、またはCRLFからLF変換してみましょう。

改行コードを確認する

fileコマンドを使う

BOM編でもご紹介したLinuxfileコマンドを利用して改行コードを確認できます。

このように入力すると、CRLFの場合は以下のように表示されます。

with CRLF line terminators」と表示されればCRLF、無ければLFということになります。

odコマンドを使う

以下のように実行すると、

改行している箇所が「nLF)」または「rnCRLF)」で表示されます。
詳しくは以下を参照。

改行コードを一括変換

それでは、改行コードを確認したので変換していきます!
一般的には、nkfコマンドを利用して変換する情報が多いのですが、著者の環境ではnkfをインストールしておらず、代わりに文字列を置換する際によく使うsedコマンド変換します。

sedコマンドの基本的な使い方は以下の通りです。

LF ⇒ CRLF

まずは、改行コードLFCRLF変換する方法です。
以下のように、sedコマンド正規表現を使って変換します。

実行したら「lf2crlf.txt」ファイルに対して上記の確認コマンドを実行してみてください。

CRLF ⇒ LF

次は逆のCRLFをLFに変換する方法です。

当たり前ですが、正規表現の部分が違うので注意してください。

ねこの足跡R
[Linux] 改行コードを変換する 目次1 改行コードの種類2 改行コードを変換する2.1 nkf編2.1.1 上書きする2.1.2 複数のファイルをまとめて変更する2.1.3 注意点2.2 sed編3 参考ページ 改行コードの種類 ま...

ハマったところ

sedの使い方をよく読んでなくて失敗した経験談です。
最初は指定した[ファイル名]をそのまま編集してくれると思ったのですが、変換した結果を表示するだけでした。
そこで、同じファイル名に出力したら上書きしてくれるのかと思いきや、空のファイルになってしまいました。
ですので、上記のサンプルでは後ろに別ファイル名で出力するようにしています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

コメント

コメントする

CAPTCHA


目次