テキストの^M(はっとM)への対処

最近暫く見かけなかったけど、稀に遭遇するのでメモ。


WindowsからテキストファイルをftpなどのバイナリモードでUNIX上に転送した場合、行末の改行コードが「^M(はっとM)」に変換されてしまう。


該当ファイルを探すには、以下のようにする。^Mは、「Ctrl-V Ctrl-M」で入力する。

$ grep '^M'


または、cat -e でも確認できる。odコマンドでも良い。

$ cat -e test.php


この改行コードを削除するには、次のような方法がある。

viエディタを使う場合、コマンドモードにて以下のようにする。

:%s/^M$//s


Perlを使う方場合。

$ perl -i.old -npe 's/\r\n/\n/' hoge.txt