サーバ管理をする上でPerlでスクリプトを組み、Linuxサーバで動かしているのですが、それに限らずWindows上で作業したテキストファイルをLinuxにアップロードして使用するということはよくあります。その際にアップロードしたファイルの改行コードがUNIXではなくWindowsとなっており、正常に使用できないということがあります。Windows上で正しく変換しなおせば良いのですが、Linux上で改行コードを変換するコマンドも用意されていますのでメモ書きを残します。
まず改行コードは大きくわけて以下のものがあります。
OS | 改行コード |
DOS / Windows | CR+LF |
Mac OS ( OS X以前 ) | CR |
UNIX系OS | LF |
dos2unixコマンドはyumコマンドでインストールできます。
# yum install dos2unix # rpm -qa | grep dos2unix dos2unix-6.0.3-4.el7.x86_64 |
改行コードを変換する具体的なコマンドは下記のようになります。
# Windowsの改行コードからUNIXの改行コードに変換する # dos2unix test.txt dos2unix: converting file test.txt to Unix format ... # 現状の改行コードを調べる。何も表示されない場合はLF # file test.txt test.txt: ASCII text # UNIXの改行コードからWindowsの改行コードに変換する # unix2dos test.txt unix2dos: converting file test.txt to DOS format ... # 変換後の改行コードを調べる。 # file test.txt test.txt: ASCII text, with CRLF line terminators |
これらのコマンドでなくてもnkfなどでも改行コードを変換することは可能です。ただ、CentOSではなぜかyumでnkfを見つけることができず、オプションなども覚えきることができないのでdos2unixコマンドがお勧めです。