it-swarm-tr.com

DOS satır sonlarını vim'deki Linux satır sonlarına dönüştür

Windows'ta oluşturduğum dosyaları açarsam, satırların tümü ^M ile biter.
Bu karakterleri bir kerede nasıl silerim?

652
Bert Hekman

dos2unix bunu yapacak bir komut satırı yardımcı programıdır veya kullanırsanız :%s/^M//g kullanacaktır. Ctrl-vCtrl-m ^ M girmek için, veya :set ff=unix yapabilirsiniz ve vim sizin için yapacak.

'Fileformat' ayarındaki dokümanlar burada , ve vim wiki'nin kapsamlı bir satır sonu dönüşümleri sayfasında vardır.

Alternatif olarak, dosyaları ileri geri hareket ettirirseniz, onları dönüştürmek istemeyebilirsiniz, ancak :set ff=dos işlevini yapmak isteyebilirsiniz, bu nedenle vim bir DOS dosyası olduğunu bilir ve satır sonları için DOS kuralları kullanır.

995
pjz

Görünümdeki satır sonlarını değiştirin:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

Bu aynı zamanda kaydetme işlemi olarak da kullanılabilir (: yalnız ekranda gördüğünüz satır sonlarını kullanarak kaydetmeyecektir):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

Ve komut satırından kullanabilirsiniz:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done
250
Ludvig A. Norin

Ben genellikle kullanırım

:%s/\r/\r/g

bu biraz garip görünüyor, ancak vim'in linefeeds ile eşleşmesi nedeniyle çalışıyor. Ayrıca hatırlamayı daha kolay buluyorum :)

154
t-dub

Aşağıdaki komutu kullanmayı tercih ederim:

:set fileformat=unix

Dosyanızı Macintosh veya MS-DOS/MS-Windows dosya kurallarına dönüştürmek için sırasıyla mac veya dos kullanabilirsiniz. Dosya zaten doğru biçimde ise ve hiçbir şey yapmaz.

Daha fazla bilgi için vim yardımına bakın:

:help fileformat
79
Sylvain Defresne
:%s/\r+//g

Vim'de, bu tüm taşıma iadelerini çıkarır ve sadece yeni satırlar bırakır.

19
mercutio

dos'dan unix'e dönüştürmek için :set fileformat=unix.

16
13
Alex Gartrell

dos2unix, dosya içeriğini doğrudan değiştirebilir.

Geçici dosya yeniden yönlendirmeye gerek kalmadan doğrudan dosya üzerinde kullanabilirsiniz.

dos2unix input.txt input.txt

Yukarıdaki varsayılan ABD klavyesini kullanır. İngiltere klavyesini kullanmak için -437 seçeneğini kullanın.

dos2unix -437 input.txt input.txt
9

Dos dizininden Unix'e dosya dizini dönüştürme

Komut satırı ve sed komutlarını kullanarak, geçerli dizindeki tüm dosyaları ".ext" uzantılı ve tüm "^ M" harflerini kaldırın.

@ https://Gist.github.com/sparkida/777317

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

ayrıca, yukarıda belirtildiği gibi ^ M Ctrl+V + Ctrl+M (sadece "^" harfini ve M harfini yazmayın)

7
Sparkida
tr -d '\15\32' < winfile.txt > unixfile.txt

(bakınız: http://kb.iu.edu/data/acux.html )

6
MichaelD

Aşağıdaki komutla:

:%s/^M$//g 

Görünmek için ^M tipini alın CtrlV sonra CtrlMCtrlV Vim'e tam anlamıyla girilen bir sonraki karakteri almasını söyler.

5
Dave Webb

Aşağıdaki adımlar dos için dosya biçimini unix'e dönüştürebilirsiniz:

: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.

Referans: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

5
ajitomatix

Kullanabilirsiniz:

vim somefile.txt +"%s/\r/\r/g" +wq

veya dos2unix utility.

4
Christy Wald
:g/Ctrl-v Ctrl-m/s///

CtrlM DOS satırı sonlarının eklediği \r karakteri veya satır başı değeridir. CtrlV vim'e değişmez bir yazı eklemesini söyler CtrlM Komut satırında.

Bir bütün olarak ele alındığında, bu komut tüm \r öğelerini hiçbir şey ile değiştirir, satırların sonundan kaldırır.

4
Rob Wells

^ M görünmesini sağlamakla ilgili yorum benim için işe yaradı. Sadece vi'mde "^ M" yazıyor (hiçbir şey bulunamadı). CTRL+VCTRL+M dizisi olsa mükemmel yaptı.

Çalışma ikame komutum

:%s/Ctrl-V Ctrl-M/\r/g

ve ekranımda şöyle görünüyordu:

:%s/^M/\r/g
4
Dannid

Çok kolay bir yol buldum: Dosyayı nano ile açın: nano file.txt

Basın CTRL+O kaydetmek için, ancak tuşuna basmadan önce Enter, tuşuna basın: ALT+D DOS ve Unix/Linux satır sonları arasında geçiş yapmak için veya ALT+M Mac ve Unix/Linux satır sonları arasında geçiş yapmak için Enter kaydetmek ve CTRL+X bırakmak.

4
Stefan Sjöberg

Aşağıdaki komutu kullanabilirsiniz:
:%s/^V^M//g
'^' kullanımı anlamına gelir CTRL tuşuna basın.

3
JayG

aşağıdaki komut geçerli dizindeki tüm .sh dosyalarını yeniden biçimlendirmek için kullanılır, Fedora işletim sistemimde test ettim.

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
2
user3220487

Bunu bir yerlerde gördüğümü biliyordum. İşte FreeBSD giriş ipucu:

Tüm bu ^ M karakterlerini bir DOS dosyasından kaldırmanız mı gerekiyor? Deneyin

tr -d \\r < dosfile > newfile
    -- Originally by Dru <[email protected]>
1
Albaro Pereyra

Genellikle bunun için kullanabileceğiniz bir dos2unix komutu vardır, sadece el kitabını okuduğunuzdan emin olun, çünkü GNU ve BSD sürümleri argümanlarla nasıl başa çıktıklarına göre değişir.

BSD versiyonu:

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

GNU versiyonu:

dos2unix $FILENAME

Alternatif olarak, burada önerilen cevaplardan herhangi biriyle kendi dos2unix adresinizi oluşturabilirsiniz, örneğin:

function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;

    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}
1
dsm

Doğrudan linux konsolunda çalıştırmak için: vim file.txt +"set ff=unix" +wq

1
CBuzatu

Vim'de şunu yazın:

:w !dos2unix %

Bu, mevcut tamponunuzun içeriğini dos2unix komutuna yönlendirir ve sonuçları mevcut içeriklerin üzerine yazar. Vim sonra dosyayı yeniden yüklemek isteyecek

1
Tallak Tveide

windows'ta NotePad veya NotePad ++ ile bir dosya oluşturup Linux'a getirip vim ile açıyorsanız, her satırın sonunda ^ M göreceksiniz. Bunu kaldırmak için

Linux terminalinizde, yazın

dos2unix dosyaadı.ext

Bu gerekli sihri yapacak.

0
Santle Camilus

Bu konu çok eski olmasına rağmen, wikia'dan başka şeyler koymak istiyorum:

%s/\r\+$//g

bu doldurma, satır sonuna kadar tüm satır başı işaretlerini (bir veya daha fazla tekrar) bulur ve siler, bu nedenle sadece \n eol konumunda kalır.

0
loadaverage

Bu benim yolum. Dos EOL'de bir dosya açtım ve otomatik olarak unix EOL'ye dönüştürecek dosyayı kaydettiğimde

autocmd BufWrite * :set ff=unix
0
Thomas PABST

^ M'in yerine newlines istedim. Kurtarmaya Perl:

Perl -pi.bak -e 's/\x0d/\n/g' Excel_created.txt

Veya stdout'a yazmak için:

Perl -p -e 's/\x0d/\n/g' < Excel_created.txt
0
user3379574