IT

【Linux】sedコマンドを使った改行コードの変換方法

こんにちは。Tama(@tamateur_com)です!

今回は、コマンドを使って改行コードを変換する方法を紹介します。
実際の業務でも使用したため、備忘も込めて投稿します。

改行コードの種類

改行コードは2種類あります。

改行コード日本語名正規表現
LF(line feed)改行\n
CR(carriage return)行頭復帰\r

システムによって使用されている改行コードが違い、片方または両方が使われます。

システム改行コード正規表現
UNIX系LF\n
WindowsCR+LF\r\n

実際のファイル内でどのように表記されているかは、catコマンドに「e」オプションを付与することで確認できます。
LFの場合は、行末に「$」が表示されます。

CRLFの場合は、「^M」「$」が表示されます。

改行コードの調べ方

改行コードを確認するには、fileコマンドを使用します。
CRLFが使用されていれば、with CRLF line terminators の表記があります。
無ければLFということになります。

改行コード:LF
改行コード:CRLF

変換方法

sedコマンドに「i」オプションを付けて実行します。
「i」オプションはファイルを直接編集するオプションになります。

LF ⇒ CRLF

sed -i ‘s/$/\r/g’ <ファイル名>
行末の「$」をCR「\r」に変換する。

CRLF ⇒ LF

sed -i ‘s/\r//g’ <ファイル名>
CR「\r」の部分を空白にする。(削除する)