2014-05-23 10 views
9

Ich exportierte Ergebnisse in eine Textdatei von einem Programm unter Windows 7 und kopierte die Datei auf Xubuntu 14.04. In einem Terminal lief ich dos2unix file.txt, was mir converting file out_mapqtl.txt to Unix format sagt. Wenn ich jedoch die Datei mit less anschaue, sehe ich immer noch das Windows-Ende der Zeile als^M, und wc -l gibt mir "0" zurück.dos2unix konvertiert nicht^M

Ich habe versucht, einige Dinge beschrieben here, aber keine funktioniert. Ich öffnete dann die Datei in Vim und tat :%s/\r/\r/g wie erklärt there, die gut funktionierte. Also irgendeine Idee, warum dos2unix nicht funktioniert hat? Wäre es möglich, Vim nicht jedes Mal zu öffnen?

+0

Ein bisschen spät hier ...Aber ich habe ein kleines Programm geschrieben, das das Leben leichter macht als dos2unix, wenn Sie sich über das Eingabeformat nicht sicher sind, oder wenn Eingabeformate vermischt sind: https://github.com/mdolidon/endlines –

Antwort

8

\r bezeichnet einen Wagenrücklauf und am MAC wird es verwendet, ohne \n einen Zeilenumbruch zu bezeichnen. Sind Sie sicher, dass sich die Datei im DOS-Format (\r\n) befindet und nicht MAC (\r)?

Wenn VIM wirklich stellt sich heraus, die einzige Sache, die Ihre Dateien reparieren werden, können Sie auch rufen Sie es wie:

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

Dadurch wird die Datei öffnen, die Funktion ausführen, speichern, dann kündige.

Können Sie uns ein Beispiel für die Datei geben, so dass wir weiter untersuchen können?

+0

Entschuldigung für die Verzögerung meiner Antwort. Die Datei wurde unter Windows 7 erstellt, daher nehme ich an, dass es sich um das DOS-Format handelt. Ich bin mir nicht einmal sicher, ob das Programm auf Mac läuft. Das Programm heißt übrigens [MapQTL] (http://www.kyazma.nl/index.php/mc.MapQTL/). Wie auch immer, mein Problem ist jetzt gelöst, danke. – tflutre

+0

Vielen Dank, dass Sie uns wissen lassen, dass Ihr Problem gelöst wurde, und dass Sie meine Lösung als Antwort akzeptieren. –

+0

hi, was macht "% s/\ r/\ r/g"? es sieht aus wie sed Ausdruck. Ersetzen Sie "\ r" durch "\ r"? – nathan

1

Try this:

tr -d '\r' < file 
0

Versuchen:

:%s/\r\(\n\)/\1/g 

oder

:%s/^M//g 
4

Ich weiß, Sie haben dieses Problem gelöst bekommen, aber ich wollte eine Notiz für Verweis hinzuzufügen, basierend auf ein paar Tests habe ich getan.

Wenn weniger^M, dann wie Sybren ich vermute, es ist eine MAC-Stil-Endung (\ r), nicht DOS (\ r \ n). Sie können diese einfach mit Katze bestimmen:

$ cat -en Dateiname

  • Unix Endungen (\ n) zeigen, wie $
  • MAC Endungen (\ r) zeigen, wie ^M (weniger zeigt diese)
  • DOS \ Windows-Endungen (\ r \ n) zeigen, wie ^M $ (weniger erscheint nicht diese)
zu zeigen

Verwenden dos2unix auf dem DOS loszuwerden (^ M $) Endungen

Verwenden mac2unix auf der MAC loszuwerden (^ M) Endungen - dos2unix nicht los davon bekommen.

Ich hatte eine Datei, wo ich dos2unix und mac2unix verwenden musste, um alle Nicht-Unix-Enden loszuwerden.

+0

danke für diese Antwort, ich war ratlos mit dos2unix, wusste nicht, dass die Datei die alten Mac-Line-Enden irgendwie verwendet. – Pellet