[Linux] 改行コードを変換する | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Linux、Windows間でテキストファイルをやりとりする場合など、Linux上でテキストファイルの改行コードを変換しなければならないことがあります。

この手の処理はコマンドを1つ覚えてしまうと、そのやり方で通してしまうものですが、実はその方法はいくつもあるようです。

CRLFからLFへの変換
dos2unixコマンド
dos2unix TEST.TXT

nkfコマンド
nkf --windows --overwrite TEST.TXT 

trコマンド
tr -d '\r' < TEST_CRLF.TXT > TEST_LF.TXT

LFからCRLFへの変換
unix2dosコマンド
unix2dos TEST.TXT

nkfコマンド
nkf --unix --overwrite TEST.TXT 

perl
perl -p -e 's/\n/\r\n/' < TEST_LF.TXT > TEST_CRLF.TXT

dos2unix、unix2dos が使える環境であれば、これが一番使いやすそうですね。


改行コードの一括変換
以下のように応用すれば、複数のテキストファイルの改行コードを一括変換することもできます。

find . -regex '.*\.txt' -exec dos2unix {} \;

find . -regex '.*\.xml' -exec unix2dos {} \;