Linux

2012-02-13, dos2unix

dos2unix - 改行コード変換

Windows等で記述したスクリプトは、デフォルトでは改行コードがUnixと異なるため、動作しません。さらに悪いことに、動作不良の原因となるコード(CRLF中のCR)は、通常のエラーメッセージ等では可視化されないため、原因の究明に手間取ってしまうという問題もあります。

改行コードを調べる

ファイルの改行コードを調べるには幾つかの方法があります。まずはfileコマンド。

$ file foo.txt
foo.txt: ASCII text, with CRLF line terminators

CRLFならcat等のコマンドでも可視化されます(全ての場合で表示されるかは分かりません)。

$ cat -v foo.txt
Hello^M

バイナリビューアが一番確実かもしれません。「CR=\r」「LF=\n」という形で可視化されます。

head foo.sql | od -c

「-a」オプションをつけると「CR=cr」「LF=nl」と表記されます。

改行コードをLF(unix)に変換する

dos2unixという専用のコマンドもあります。

$ dos2unix foo.txt

が、しかし、CRLFからLFへの変換なら、以下の方法がお手軽ですね。CR(\r)を削除するだけです。

$ tr -d \\r < foo.txt > bar.txt

参考URL

${Unknown macro: 141113_mac.html}

この記事は役に立ちましたか?