602 文字
3 分
Linuxで改行コードを確認/変更する
同僚からもらったテキストファイルの改行コードがWindowsの\r\nだったせいで、解析用のシェルスクリプトが上手く回らなかったので、改行コードの確認と変更方法のメモです。
OS毎の改行コード
WindowsとLinux、OS Xの改行コードは
| OS | 改行コード |
|---|---|
| Windows | \r\n |
| Linux (Unix) | \n |
| OS X | \n |
となっています。
改行コードの確認
まずは改行コードの確認をします。確認にはodコマンドを使用します。デフォルトではodは8進数でファイル内容をダンプしますが、cオプションを付けることでASCIIコードとしてダンプされるので、改行コードが目に見えるようになります。
# 実際のファイルの中身$ cat hoge.txthogefugapiyo
# ASCIIコードでダンプ$ od -c hoge.txt0000000 h o g e \r \n f u g a \r \n p i y o0000020 \r \n \r \n0000024はい、改行コードが\r\nなのが確認できました。これを\nに変換します。
改行コードの変更
改行コードの変換にはdos2unixコマンドを使用します。コマンドが見つからない場合はaptやyumでインストールしてください。
# Debian/Ubuntu系のLinuxの場合$ sudo apt install dos2unix
# CentOS系のLinuxの場合$ sudo yum install dos2unixいよいよdos2unixコマンドで改行コードを変換します。使い方は簡単で、変換したいファイル名を指定するだけです。ファイルは上書きされるので注意してください。
# Windowsの改行コードをLinuxの改行コードへ変換。元のファイルに上書きされる$ dos2unix hoge.txt
# 改行コードを確認。\nになっていることが確認できる$ od -c hoge.txt0000000 h o g e \n f u g a \n p i y o \n \n0000020これでWindowsの改行コードをLinuxの改行コードに変換することができました。
ちなみに、反対にLinuxの改行コードからWindowsの改行コードへの変換はunix2dosコマンドを使えばできます。
# Linuxの改行コードをWindowsの改行コードへ変換$ unix2dos hoge.txt
# 改行コードを確認。\r\nになっていることを確認できる$ od -c hoge.txt0000000 h o g e \r \n f u g a \r \n p i y o0000020 \r \n \r \n0000024リンク