Windowsで作成したファイルを開くと、すべての行が^M
で終わります。
これらの文字を一度に削除するにはどうすればよいですか。
dos2unix はこれを実行するコマンドラインユーティリティです。使用する場合は:%s/^M//g
です。 Ctrl - vCtrl - m ^ Mを入力するか、:set ff=unix
を入力するとvimがそれを実行します。
'fileformat'設定に関するドキュメントはこちら 、 です。そしてvim wikiは包括的な 行末変換ページを持っています .
あるいは、ファイルを頻繁に前後に移動する場合は、変換するのではなく:set ff=dos
を実行することをお勧めします。したがって、vimはそれがDOSファイルであることを認識し、行末にDOSの規則を使用します。
ビューの行末を変更します。
: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
私は通常使う
:%s/\r/\r/g
これは少し奇妙に思えますが、vimが改行にマッチする方法のためにうまくいきます。私も覚えておくのが簡単だと思います:)
私は以下のコマンドを使うのが好きです。
:set fileformat=unix
mac
またはdos
を使用して、ファイルをそれぞれMacintoshまたはMS-DOS/MS-Windowsのファイル規約に変換することもできます。ファイルがすでに正しい形式であれば、何もしません。
詳細については、vimのヘルプを参照してください。
:help fileformat
:%s/\r+//g
Vimでは、これはすべての改行を取り除き、改行だけを残します。
dosからunixに変換する:set fileformat=unix
。
から: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:%s/\ r $ //
dos2unix
はファイルの内容を直接変更することができます。
一時的なファイルのリダイレクトを必要とせずに、ファイルに直接使用できます。
dos2unix input.txt input.txt
上記はUSキーボードを想定しています。英国のキーボードを使用するには、-
437オプションを使用します。
dos2unix -437 input.txt input.txt
@ https://Gist.github.com/sparkida/777317
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
また、上記のように^ M= Ctrl+V + Ctrl+M (キャレット記号「^」とMを入力しないでください)
tr -d '\15\32' < winfile.txt > unixfile.txt
次のコマンドで
:%s/^M$//g
表示する^M
を取得する CtrlV それから CtrlM。 CtrlV 次の文字をそのまま入力するようにVimに指示します。
次の手順で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
あなたが使用することができます:
vim somefile.txt +"%s/\r/\r/g" +wq
またはdos2unix utility
。
:g/Ctrl-v Ctrl-m/s///
CtrlM DOSの行末に追加される文字\r
、またはキャリッジリターンです。 CtrlV リテラルを挿入するようにvimに指示する CtrlM コマンドラインの文字.
全体として見れば、このコマンドはすべての\r
を何もないものに置き換え、それらを行末から削除します。
^ Mを表示させることについてのコメントは、私にとってうまくいったことです。私のviに "^ M"とタイプするだけでは何も得られません(見つかりません)。の CTRL+VCTRL+M シーケンスは完全にそれをやった。
私の作業代行コマンドは
:%s/Ctrl-V Ctrl-M/\r/g
これは私の画面ではこんな感じでした。
:%s/^M/\r/g
私は非常に簡単な方法を見つけた:nanoでファイルを開く:nano file.txt
押す CTRL+O 保存するが、押す前 Enter、 押す: ALT+D DOSとUnix/Linuxの行末を切り替えるには、または ALT+M MacとUnix/Linuxの行末を切り替えるには、を押します。 Enter 保存して CTRL+X やめるために。
次のコマンドを使用できます。:%s/^V^M//g
「^」は用途を意味します CTRL キー。
下記のコマンドはカレントディレクトリの全ての.shファイルを再フォーマットするために使われます、私は私のFedora OSでそれをテストしました。
for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
私はこれがどこかで見られることを知っていました。これがFreeBSDのログインのヒントです。
DOSファイルからそれらすべての^ M文字を削除する必要がありますか?やってみる
tr -d \\r < dosfile > newfile
-- Originally by Dru <[email protected]>
通常、これに使用できる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}";
}
Linuxコンソールを直接起動するには:vim file.txt +"set ff=unix" +wq
Vimでは、次のように入力します。
:w !dos2unix %
これにより、現在のバッファの内容がdos2unixコマンドにパイプ処理され、結果が現在の内容に上書きされます。 Vimはその後ファイルをリロードするように要求します
windowsでNotePadまたはNotePad ++でファイルを作成し、それをLinuxに持っていきvimで開くと、各行の終わりに^ Mが表示されます。これを削除するには
Linux端末で次のように入力します。
dos2unix filename.ext
これで必要な魔法ができます。
このトピックは非常に古くありますが、私はウィキアから別のものを入れたいと思います。
%s/\r\+$//g
これで、行末までのすべての改行記号(1つ以上の担当者)が検索されて削除されるため、\n
だけがeolのままになります。
これが私のやり方です。 dos EOLでファイルを開いたとき、ファイルを保存すると自動的にunix EOLに変換されます
autocmd BufWrite * :set ff=unix
^ Mの代わりに改行が必要でした。 Perlを助けに:
Perl -pi.bak -e 's/\x0d/\n/g' Excel_created.txt
または標準出力に書き込むには:
Perl -p -e 's/\x0d/\n/g' < Excel_created.txt