ファイルの各行の最後についている^Mを削除したい!

サーバー上にファイルをアップロードすると、各行の最後に「^M」がついている場合があります。

これを削除する方法をご紹介します。

viで削除する場合K

viで対象ファイルを起動し、ノーマルモードで以下のように入力すると無くなります!

以下を入力

表示上は以下のように見える

“^M”は特殊キーといわれるものの一つで”リターンキー”を表します。
特殊キーをだすには以下の方法が必要になります。

で、^Mはリターンキーなので、Ctrl-vを押した後にリターンキーを押すと出てくるのです。

perlで削除する場合

コマンドラインから以下を実行

“-e”は次に続く文字列をpearlスクリプトとして実行
“-i”は入力ファイルの修正。”.bak”を付けるとバックアップファイルを生成する
“filename”は対象のファイル名

http://www.yynet.org/~yokota/INSTALL/log.html

普通に^Mと入力しても置換できるっぽいね。
^Mが出る理由も以下に書いてあります。

テキストファイルの行末に^Mが表示される

———————
Linuxの改行コードはLFだけなので、ファイルの転送方法によってはWindowsで作成したテキストファイルをviで開くと、すべての行末に「^M」が表示される場合がある。

1つずつ検索して削除することも可能だが、数が多いと面倒だ。エディタで一括置換するのが簡単でいい。viで一括置換するには、[:]キーを押してコマンドモードに入り、一括置換のコマンド
%s/検索文字列/置換文字列/g

を実行する。

ここでは、^Mを削除(^Mを何もない状態に一括置換)するので、以下のように入力する。
:%s/^M//g

^Mを入力するには、[Ctrl]+[V]キーを押してから、[Ctrl]+[M]キーを押す。^Mは制御コードなので、[^]キーと[M]キーで「^M」と入力しても^Mとは認識されないので注意が必要だ。ちなみに、この方法はviではテキストの挿入モードで制御コードを入力するときにも使用できる。

ここではviを使って一括置換する方法を紹介したが、trコマンドを使っても一括置換が可能だ。trコマンドの使い方は文字を置換するにはを参照。

タイトルとURLをコピーしました