でファイルを開くと、vim
奇妙な^M
文字が表示されます。
残念ながら、世界で人気のある検索エンジンは、クエリ内の特殊文字ではうまく機能しないため、ここで質問しています:
この
^M
キャラクターは何ですか?どうしてそこに着いたのでしょうか?
どうすればそれを取り除くことができますか?
help digraph-table
。
でファイルを開くと、vim
奇妙な^M
文字が表示されます。
残念ながら、世界で人気のある検索エンジンは、クエリ内の特殊文字ではうまく機能しないため、ここで質問しています:
この^M
キャラクターは何ですか?
どうしてそこに着いたのでしょうか?
どうすればそれを取り除くことができますか?
help digraph-table
。
回答:
^M
キャリッジリターン文字です。これを見ると、おそらくDOS / Windowsの世界で作成されたファイルを見ていることになります。Unixの世界では、行の終わりは改行でマークされていますが、単一の改行でマークされています。
詳細についてはこの記事を、またnewlineについてはウィキペディアのエントリをお読みください。
この記事では、さまざまな行末マーカーを持つファイルを透過的に編集するためのvimのセットアップ方法について説明します。
^M
いくつかの行の末尾にファイルがあり、それらを削除したい場合は、Vimでこれを使用します。
:s/^M$//
(プレスCtrl+ V Ctrl+ Mそれを挿入します^M
。)
:%s/^M/\r/g
代わりに、削除^M
し^M
て改行文字に置き換えてください\r
。を指定しない%
場合、コマンドは現在の行にのみ適用されます。そして、私は次のような^M
行末ではないいくつかの例に出くわしましたThe first line.^MThe second line.
:%s/^M/
^M
UNIXで使用されている
\n
は、Unixで使用されていると言っていますが、これは正しいです。これは、ASCIIコードで10
、それ以外として知られています^J
。
これは私のために働いた
:e ++ff=dos
:e ++ ff = dosコマンドは、Vimにファイルを再度読み取り、dosファイル形式を強制するように指示します。Vimは、CRLFおよびLFのみの行末を削除し、バッファ内の各行のテキストのみを残します。
それから
:set ff=unix
そして最後に
:wq
ff
形式をファイルを参照しますか?どう++ff
?
この^ Mとは何ですか?
^ Mは復帰文字です。これを見ると、おそらくDOS / Windowsの世界で作成されたファイルを見ていることになります。Unixの世界では、行の終わりは改行でマークされていますが、単一の改行でマークされています。
どうしてそこにたどり着いたのでしょうか?
ファイル形式に変更がある場合。
どうすればそれを取り除くことができますか?
でファイルを開く
vim -b FILE_PATH
次のコマンドで保存します
:%s/^M//g
私の場合、
上記の何も機能せず、CSVファイルをMacからLinuxマシンにコピーし、上記のすべてのコマンドを使用しましたが、何も役に立たなかった
tr "\015" "\n" < inputfile > outputfile
^ M文字が次のような行間でサンドウィッチされたファイルがありました
Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
〜/ .vimrcに次の行を追加します
command! Tounix :call Preserve('1,$s/^M//')
次に、Windowsの行末を含むファイルがある場合、コマンド ":Tounix"を実行します。