回答:
DOS2UNIXはこれを行いますコマンドラインユーティリティである、または:%s/^M//g
あなたが使用する場合Ctrl- v Ctrl- m入力^ Mに、またはあなたのことができ:set ff=unix
、Vimがあなたのためにそれを行います。
「fileformat」設定に関するドキュメントはこちらです。vimwikiには、改行変換に関する包括的なページがあります。
あるいは、ファイルを何度も前後に移動する場合、それらを変換するのではなく、変換したい場合がある:set ff=dos
ため、vimはそれがDOSファイルであることを認識し、行末にDOS規則を使用します。
:%s/^M//g
である必要があります:%s/\r//g
。これ^M
は、「行の先頭で大文字の「M」に一致する」という意味だけです。
:%s/\r//g
は私のために働いた、@ Bunykを乾杯
set ff=unix
何もしないので、私は何かを逃しているに違いない。多分それはファイルを変換しますが、すべての^M
文字はまだそこにあります。
ビューの行末を変更します。
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
これは、保存操作としても使用できます(:wだけでは、画面に表示される行末を使用して保存されません)。
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
そして、あなたはコマンドラインからそれを使うことができます:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
:w +ff=unix
ここに書かれている他のほとんどのものよりもはるかに優れており、bashスクリプトは素晴らしいボーナスです。
:e
コマンドがインストールvimの私のWindows上で何かをするためには表示されません。私のビューはまだ^M
コードを示しています。
私は通常使用します
:%s/\r/\r/g
これは少し奇妙に思えますが、vimが改行と一致する方法のために機能します。私も覚えやすいです:)
:set ff=unix
が、今日開いたファイルは特に奇妙だったに違いない。Vimはすでにそうfileformat=unix
だと言ったが、すべての行末はそうだった^M
。この解決策は私にとってうまくいきました。
:%s/\r//g
代わりに私のために働きます。
:%s/\r//g
は唯一の汎用ソリューションです。特に、DOSスタイルとUNIXスタイルの両方の改行が混在する異種モードのファイルを含む混合モードファイルの場合はそうです。標準的な解決策は、(例えば、:set ff=unix
、:e ++ff=unix
)同じ改行スタイルで現在のバッファ端のすべての行を前提としています。時々彼らはそうします。時々彼らはしません。悲しみのキュー。
私は次のコマンドを使用することを好みます:
:set fileformat=unix
mac
またはdos
を使用して、ファイルをmacintoshまたはMS-DOS / MS-Windowsファイル規則にそれぞれ変換することもできます。そして、ファイルがすでに正しい形式である場合は何もしません。
詳細については、vimのヘルプを参照してください。
:help fileformat
^M
文字が含まれています。
set fileformat=unix
.vimrcファイルへの追加が機能しました。
:%s/\r+//g
Vimでは、これによりすべての改行が削除され、改行のみが残ります。
:%s/\r//g
それに変更されたとき、それは魅力のように機能しました。
から:http : //vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:%s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
また、上記のように^ M = Ctrl+V+ Ctrl+M(キャレット「^」記号とMを入力しないでください)
dos2unix
ファイルの内容を直接変更できます。
一時的なファイルリダイレクトを必要とせずに、ファイルで直接使用できます。
dos2unix input.txt input.txt
上記は想定されるUSキーボードを使用しています。-
UKキーボードを使用するには、437オプションを使用します。
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(参照:http : //kb.iu.edu/data/acux.html)
次の手順で、DOSのファイル形式をUNIXに変換できます。
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using unix (LF-only) line endings.
リファレンス:http : //vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
私は非常に簡単な方法を見つけました:nanoでファイルを開きます: nano file.txt
CTRL+ Oを押して保存しますがEnter、を押す前に:ALT+ Dを押してDOSとUnix / Linuxの行末を切り替えるか、:ALT+ Mを押しEnterてMacとUnix / Linuxの行末を切り替えてから、を押して保存し、CTRL+ Xを押して終了します。
^M
末尾がありました。保存する場合はdosとして保存し、削除する場合はlinuxとして保存します。使用して確認できますcat -v
通常dos2unix
、これに使用できるコマンドがあります。GNUとBSDのバージョンでは引数の扱い方が異なるため、必ずマニュアルを読んでください。
BSDバージョン:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
GNUバージョン:
dos2unix $FILENAME
または、dos2unix
ここに提案された回答のいずれかを使用して独自に作成することもできます。たとえば、
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
^ Mの代わりに改行が欲しかった。Perlが救い出します:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
またはstdoutに書き込むには:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfile
と0x0d 0x0a
"\r\n"
それがあなたの問題であることがわかりました。