😹

LinuxでCRLFとLFを一括で相互変換する

2022/09/08に公開約1,200字2件のコメント

コーディングしてると CRLF と LF が混在してストレスが溜まる機会があります
その時にコマンド一つでどちらかに変換できると便利なので、その方法を書き残します

nkf コマンド

nkf コマンドとは Linux や Windows で異なる改行コードを変換するためのコマンドです

インストール

Ubuntu

$ sudo apt install nkf

Arch

$ sudo pacman -S nkf

Mac

$ brew install nkf

使い方

使い方は以下の通りです
引数に -u と -w がありますが、それはそれぞれ Unix(LF) と Windows(CR+LF) の訳です

CRLF to LF

$ nkf -Lu --overwrite <変換するファイル>

LF to CRLF

$ nkf -Lw --overwrite <変換するファイル>

--overwrite とは

–overwrite オプションとは既存のファイルを直接上書きするオプションです
このオプションを入力しなかった場合はターミナルに改行コードが変換された文章が出力されるだけで、変換元のファイルの改行コードは変換されてません
変換する場合は–overwrite をつければ良いでしょう

カレントディレクトリ内のファイルを全て変換

CRLF to LF

$ grep -Ilrs `printf "\r\n"` . | xargs nkf -Lu --overwrite

こちらは find コマンドでファイルを検索して範囲に入れて、grep で改行コードが CRLF のファイルを検索して範囲を狭めて、その結果を nkf で LF に変換するコマンドです

LF to CRLF

$ grep -Ilrs `printf "\n"` . | xargs nkf -Lw --overwrite

こちらも同様に CRLF に変換しております

alias に登録すると便利

よく使うコマンドなので、alias に登録しましょう

alias crlf2lf="grep -Ilrs `printf "\r\n"` . | xargs nkf -Lu --overwrite"
alias lf2crlf="grep -Ilrs `printf "\n"` . | xargs nkf -Lw --overwrite"

これを実行することで楽に改行コードの相互変換が可能です。

Discussion

nkfはパラメータ覚えるの面倒なので改行コード変換だけでいいならdos2unixの方が覚えやすいですよ
dos2unixコマンドでCRLF→LF
unix2dosコマンドでLF→CRLF
になりますしコマンド名からどっち方向への変換なのかもわかりやすいのでオススメです

そんなコマンドあったんですね
知りませんでした
ありがとうございます

ログインするとコメントできます