テキストをviで見ると行末に「^M」と表示されることがあります。これはWindowsとUNIX・Linuxなどの間でファイルのやりとりをしているときに良く起こります。これは双方の改行コードの扱いに由来する問題です。
ちなみに改行コードはWindows(SJIS)のときはCRLF、UNIX・Linux(EUC)のときLR、MAC(JIS)のときCRです。
さて、本題ですが、^Mは余分なCRが原因ですので、それを取り除けば問題は解決します。ここでは4つの方法を記します。
【1.viで除去する方法】
vi の文字列置換を使用して CR を取り除くためのコマンドは
:%s/^M//g
となります。まず「:」を押下しコマンドモードに入り、%s以下を入力しますが、ここで注意は^Mの入力です。これは文字通り「^M」と入力するのではなく「Ctrl+V」「Ctrl+M」と入力します。すなわち「:」「%」「s」「/」「Ctrl+V」「Ctrl+M」「/」「/」「g」[Enter]と入力します。
【2.コマンドラインから除去する方法】
tr -d '\r' < input_filename > output_filename
【3.PHPで除去する方法】
$line=str_replace("\r\n","\n",$line);
【4.Perlで除去する方法】
s/\x0D\x0A|\x0D|\x0A/\n/g;
Recent Comments