同僚からもらったテキストファイルの改行コードが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.txt hoge fuga piyo # ASCIIコードでダンプ $ od -c hoge.txt 0000000 h o g e \r \n f u g a \r \n p i y o 0000020 \r \n \r \n 0000024
はい、改行コードが\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.txt 0000000 h o g e \n f u g a \n p i y o \n \n 0000020
これでWindowsの改行コードをLinuxの改行コードに変換することができました。
ちなみに、反対にLinuxの改行コードからWindowsの改行コードへの変換はunix2dos
コマンドを使えばできます。
# Linuxの改行コードをWindowsの改行コードへ変換 $ unix2dos hoge.txt # 改行コードを確認。\r\nになっていることを確認できる $ od -c hoge.txt 0000000 h o g e \r \n f u g a \r \n p i y o 0000020 \r \n \r \n 0000024
コメント