Bir metin dosyasındaki satır sonlarını Windows ve Unix / Linux formatları arasında nasıl dönüştürebilirim?


33

Bir metin dosyasındaki satır sonlarını Windows ve Unix / Linux formatları arasında nasıl dönüştürebilirim?

Bir * nix ortamım var, ancak Windows tarzı satır sonları ile veri almam ve vermem gerekiyor. Bunu yapmak için standart bir yardımcı program veya komut olacağını düşündüm, ancak bulamıyorum.

Yanıtlar:


42

Muhtemelen aradığınız dos2unix, unix2dos, todosveya fromdosLinux dağıtımına göre. Ubuntu / Debian paketi todos/ tofrodos paketinin bir fromdosparçası olarak bellekten.


4
Durumda herkes, Windows çözümleri arayanlar bu soruya rastlar için memba sitesi dos2unixolan waterlan.home.xs4all.nl/dos2unix.html ve sıra Windows işletim sisteminde çalışmaktadır.
womble

Homebrew kullanarak Mac OS X'te dos2unix/unix2dos üzerine yükleyebilirsiniz . Homebrew yüklü olduğunda, komut bu formülü kullanandır . brew install dos2unix
Rory O'Kane,

24

Bir seçenek komut satırında kullanmak unix2dos(ve dos2unixgeri gitmek için).

Başka bir metin editörü kullanmaktır:
vi için:: set ff = dos, satır sonlarını dos satır sonları olarak ayarlamak için.
Emacs için: Cx [ENTER] f dos [ENTER]

Favori GUI tabanlı editörünüz (örn. Jedit) için kılavuzu veya Google’ı kontrol etmenizi öneririz.

Son olarak, bir metin editörü ile uğraşmak istemiyorsanız ve daha genel yardımcı programları kullanarak (veya unix2dos kurulmamışsa) yapın:

tr -d '\r' < infile > outfileUnix'ten
awk 'sub("$", "\r")' unixfile.txt > winfile.txtGitmek için > - Unix'ten Unix'e -> Windows'a trgitmek gibi .


dos2unix hile yaptı, ancak tr programı için teşekkürler, geçmişte çok zaman kazandırabilirdi!
alexeit,

Bir dosya karışık çizgi sonları mevcut ise, doğru yükleyecek emin olun ff: :e ++ff=unix. En azından dos -> unixdönüşüm için anlamlı .
x-yuri

Bu garip tek gömlek bir adama balık tutmayı öğretiyor, bunun için teşekkürler. Gelecekte biraz daha az aç olacağım
Gareth Davidson

13

Vim'de düzenleyin ve set fileformatkomutu kullanın.

  • MS-DOS / Windows (CR + LF sonları) ila * nix (yalnızca LF sonları)

    :set fileformat=unix
    :wq
    
  • * MS-DOS / Windows'a nix

    :set fileformat=dos
    :wq
    

Dosyayı son satırda satır sonu yoksa, kullanırken dikkatli olun; vim nasıl yapmamasını bilmediğin sürece birini ekleyecektir.
CesarB

Her diğer çözümü denemekten saatlerce sürdüğümde bu ihtiyacım olan cankurtarandı. OS X Yosemite ile teyit edilen davranış - bunun da yapışkan olmadığınıhexdump -C onayladı - oturum başına ayarlandıvi
Techmag

8

Windows'u, Unix satır sonlarına dönüştürmek için Chealion'a benzer bir şekilde kullanıyorum:

tr -d \\015 < windows > unix

Poster, windows satır sonlarına unix istiyordu. Ve cevabınız için birkaç yıl geç kaldınız.
ott--

5
Yıllar geç olsa kimin umrunda? Hala çalışıyor ve hala soruya uygulanabilir. Sadece kendim gibi gelen okuyucular için başka bir seçenek ekliyordum. Ayrıca, sorusu Windows -> Unix’i sorar ve açıklaması Unix -> Windows’i ister. omuz silkme
Josh

Sağ. Belki de unix'i pencerelere dönüştürmek için diğer tr komutunu da eklersiniz.
ott

Olumsuz oyu geri almaya çalıştım, ancak makale düzenlenene kadar kilitli olduğunu söyledi.
ott--

@ ott-- sorun değil, senin için can atmıştım. ... bekle, şimdi benim için oy kullanamıyorum! ... dang ... :)
Alois Mahdal

1

POSIX ile bunu yapmak çok zordur:

Taşıma iadelerini kaldırmak için:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Satır başı eklemek için:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.