Windowsの改行コードをUNIXの改行コードに変換するスクリプトを作る

シェルスクリプトPerlスクリプト等にWindowsの改行コードを使われると正しく動かない。
UNIXの改行コードに変換してやればいいのだが、いちいち「tr」コマンド等を使うのは面倒なので、改行コード変換スクリプトを作っておく。


一番下の内容を「dos2unix」と言う名前で保存して、

$ dos2unix hoge.txt
または
$ dos2unix hoge.txt 644

としてやれば、Windowsの改行コード(CR LF)がUNIXの改行コード(LF)に変換される。

#!/bin/sh

#
# dos2unix
#

TMPDIR=/tmp
MODE=644

if [ $# -lt 1 ]; then
    echo "Usage: dos2unix file [mode]"
    exit
fi

if [ $# -gt 1 ]; then
    MODE=$2
fi

if [ -x ${TMPDIR}/dos2unix-tmp ]; then
    rm ${TMPDIR}/dos2unix-tmp
fi

perl -pe 's/\r\n/\n/' $1 > ${TMPDIR}/dos2unix-tmp
mv -f ${TMPDIR}/dos2unix-tmp $1
chmod ${MODE} $1