einleitung
es ist sicherlich schon jedem begegnet: eine ascii-datei (zum beispiel eine simple textdatei), die unter windows abgespeichert wird, hat unter unix diese hässlichen “^M” am Ende jeder Zeile und umgekehrt hat eine datei von einem unix-system unter windows keine zeilenumbrüche mehr (alles steht in einer zeile). es muss also konvertiert werden, falls man keinen guten editor zur hand hat, wie zum beispiel ultraedit unter windows oder quanta unter unix.
ursache
die zeilenumbrüche werden unter windows und linux unterschiedlich dargestellt:
- unix verwendet: LF (=line feed)
- win verwendet: CR LF (=carriage return & line feed)
CHAR ASCII PROG LF 10 'n' CR 13 'r'
konvertieren
abhilfe schaffen 2 möglichkeiten:
1) man benutzt für die jeweilige konvertierung folgende programme:
- unix2dos (unter /usr/bin/unix2dos)
- dos2unix (unter /usr/bin/unix2dos)
oder
2) ein kleines einzeiler script:
perl -pi -e 's/rn/n/g' #win to unix perl -pi -e 's/n/rn/g' #unix to win
am besten werden die scripte als sog alias in die konfiguration der shell-umgebung eingegeben. damit sind sie als befehl aufrufbar, ohne dass eine datei angelegt wurde.
- kommandozeile öffnen und in einem editor die anpassungen vornehmen:
ee /home//.bashrc
- nun kopieren sie folgenden code:
alias w2u="perl -pi -e 's/rn/n/g'" alias u2w="perl -pi -e 's/n/rn/g'"
achten sie darauf, dass am ende der datei wieder eine leerzeile stehen sollte. möchten sie diese aliase auch benutzen, wenn sie sich von einem entfernten rechner anmelden, müssen sie die einträge auch in der datei .bash_profile vornehmen.
falls sich die datei .bashrc nicht öffnen lässt, sollte sie mit ‘touch .bashrc’ erstellt werden. ausserdem müssen sie die shellumgebung bash benutzen, andernfalls müssen die einträge in eine andere datei gemacht werden (und ggf verändert werden).
die konvertierung erfolgt nun durch:
w2u #win to unix u2w #unix to win
Responses to “unix – windows: zeilenumbrüche zwischen dokumenten konvertieren”