« ワークフローシステムの賢い導入法 | Main | 安価なサーバの登場に喜んではいけない »

April 05, 2007

^Mを取り除く方法

テキストを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;

|

« ワークフローシステムの賢い導入法 | Main | 安価なサーバの登場に喜んではいけない »

開発」カテゴリの記事

Comments

【2.1.コマンドラインから除去する方法(2)】
nkf -Lu input_filename > output_filename

Posted by: chomy | April 15, 2007 at 02:20 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/14566742

Listed below are links to weblogs that reference ^Mを取り除く方法:

« ワークフローシステムの賢い導入法 | Main | 安価なサーバの登場に喜んではいけない »