Zeilenumbruch: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 56: Zeile 56:
== Weblinks ==
== Weblinks ==


{{dewi|Zeilenumbruch|Zeilenumbruch}}
{{Weblinks|{{url_dewikipedia|Zeilenumbruch|Zeilenumbruch}}
* [http://www.linux-user.de/ausgabe/2007/11/096-zubefehl/index.html Konvertierung auf der Shell (Verwandlung auf Befehl)] (Linux-User.de)
{{url|DE|Linux User|ger|http://www.linux-user.de/ausgabe/2007/11/096-zubefehl/index.html|Konvertierung auf der Shell}}
}}




{{cat|Textdatei}}
{{cat|Textdatei}}
{{cat|Zeilenumbruch}}
{{cat|Zeilenumbruch}}

Version vom 23. März 2009, 13:54 Uhr

Der Zeilenumbruch (engl. end of line, End-of-Line / EOL) bezeichnet die Stelle, an der ein Text von einer Zeile in die nächste übergeht.

Es gibt verschiedene Systeme, um den Zeilenumbruch in einer Textdatei zu kodieren.

Betriebssystem Abkürzung Hex-Code ASCII-Code Escape-
Sequenz
Tastatur
Unix, Linux, Mac OS X LF 0x0a 10 \n CTRL+J
Windows, MS-DOS, OS/2, CP/M CR LF 0x0d 0x0a 13 10 \r\n CTRL+M, CTRL+J
Mac OS (bis Version 9), Apple II, Commodore CR 0x0d 13 \r CTRL+M
AIX OS, OS/390 NEL 15 21

Anmerkung: Das "^M" wird dabei durch Halten der CTRL-Taste und aufeinanderfolgendem Drücken der Tasten "V" und "M" erzeugt.

Beim Öffnen einer Textdatei in einem Editor fällt dieser Unterschied spätestens auf: Eine unter Windows erstellte Textdatei zeigt im vi beispielsweise am Ende jeder Zeile ein "^M"-Zeichen. Eine mögliche Lösung bieten die beiden Befehle dos2unix und unix2dos, welche Dateien von einem Format ins andere umwandeln können.

Unter einigen Linux-Distributionen kommen die beiden Befehle in jeweils eigenen Paketen daher; aktuelle Debian-Versionen liefern stattdessen das Paket "tofrodos" aus, das die beiden Programme fromdos und todos enthält. Hier weisen zwei symbolische Links von "/usr/bin/dos2unix" und "/usr/bin/unix2dos" auf die verwandten Befehle, sodass der Benutzer einerseits wie gewohnt mit dos2unix und unix2dos, aber auch mit fromdos und todos arbeiten kann. Die Programme leisten grundsätzlich dasselbe, an einigen Stellen weichen sie allerdings voneinander ab.

DOS-Zeilenumbrüche entfernen

Entweder das Programm dos2unix verwenden oder eine der folgenden Methoden versuchen.

sed 's/.$//'    dosfile > unixfile       # nimmt an, dass alle Zeilen mit CR/LF enden
sed 's/^M$//'   dosfile > unixfile       # in bash/tcsh, zuerst CTRL+V drücken, dann CTRL+M
sed 's/\x0D$//' dosfile > unixfile       # gsed 3.02.80, but top script is easier
awk '{sub(/\r$/,"");print}'              # nimmt an, dass jede Zeile mit CTRL+M endet
gawk -v BINMODE="w" '1' infile >outfile  # funktioniert nur mit gawk, aber nicht mit anderen DOS-Fassungen von awk gemacht werden
tr -d \r < dosfile > unixfile            # GNU tr version 1.22 oder höher
tr -d '\015' < dosfile > unixfile        # verwndet den Oktalwert für "\r" (siehe ASCII)
tr -d '[\015\032]' < dosfile > unixfile  # manchmal wird "^Z" an DOS-Dateien angehängt
vim -c ":set ff=unix" -c ":wq" file      # Umwandlung mit vi
vim -c "se ff=dos|x" file                # Umwandlung mit vi
recode ibmpc..lat1 file                  # Umwandlung mit recode
echo -e "s/\r//g" > dos2unix.sed; sed -f dos2unix.sed < dosfile > unixfile

Macintosh-Zeilenumbrüche entfernen

tr '\r' '\n' < macfile > unixfile
recode mac:lat1 < macfile > unixfile # pinfo recode && recode -l | grep -i mac
awk '{ gsub("\r", "\n"); print $0;}' macfile > unixfile
perl -p -e 's/\r/\n/g'  < macfile > unixfile

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen