Entfernen von '\r\n' aus textdatei

R

rikola

Foren Gott
Hallo,

ich habe eine Textdatei, in der es Windows-Zeilenumbrueche gibt, d.h., sie enden mit '\r\n'. Ich moechte diese beiden Zeichen entfernen, so dass diese Zeilen keinen Zeilenumbruch mehr haben. Alle anderen normalen Zeilenumbrueche sollen dagegen bleiben.

Ich habs mit
Code:
sed -e "s/\r\n/g" datei.text
versucht, doch das ersetzt nichts. Vermutlich, weil sed eben zeilenorientiert ist... Und
Code:
tr -d "\r\n" datei.text
setzt wohl eine oder-Verknuepfing, d.h., es entfernt sowohl '\r\n' als auch '\n'.

Kann mir jemand sagen, wie ich das richtig anstelle?

Und bevor ich ein neues Thema eroeffne:
Die Textdatei ist Ergebnis einer online-Umfrage, bei der (Windows-User) Textfelder ausfuellen und offenbar 'enter' innerhalb eines Feldes druecken.

Diese Zeilenumbrueche werde von php an die mysql-Datenbank weitergegeben. Gibt es einen Weg (entweder php oder beim Einfuegen in die Datenbank), dass diese Eingaben gleich als char(80) _ohne_ Zeilenumbruch eingefuegt werden?

Danke fuer jegliche Hinweise oder Hilfe.
 
Also, ein ziemlich dreckiger Hack währe wohl, mit nl2br aus den Zeilen umbrüchen <br> Tags zu machen, und diese dann raus zu filtern...
Das fällt mir jetzt so auf die schnelle mit Bordmitteln dazu ein.
Ansonsten gibt es da doch bestimmt eine Funktion im MySQL für, oder?
Einfach mal Doku wälzen ;-)

Sharoz
 
Ja danke, ein bisschen weiterwaelzen hat erbracht, dass ich in den php-Dateien nur an einer Stelle ein
str_replace(array("\r", "\n"), " ", $my_string);
benutzen muss, um die (zukuenftigen) Zeilenumbrueche in Leerzeichen umzuwandeln.

Wenn jetzt noch jemand weiss, wie ich in einem bestehenden export der Datenbank die Zeichen "\r\n" so ersetzen kann, dass die entsprechenden Zeilen wieder zusammengefuegt werden, waere das Problem geloest.

Danke erstmal!
 
Nein, ich denke dos2unix hilft mir nicht weiter: Ich wollte Zeilen, die durch '\r\n' getrennt sind, zusammenfassen. Soweit ich weiss, korrigiert dos2unix nur den Zeilenumbruch.

Ich konnte das Problem mit mysqldump loesen. Dort werden \r und \n als solche ausgeschrieben und habe sie dann in vi ersetzt.
 
Hallo

Aber eine recht simple Lösung gäbe es z.b. mit perl:

perl -0077 -pi -e '~s/(\r+\n+)//mgs' dos.text

Gruß Wolfgang
 
Wolfgang_1 schrieb:
Hallo

Aber eine recht simple Lösung gäbe es z.b. mit perl:

perl -0077 -pi -e '~s/(\r+\n+)//mgs' dos.text

Gruß Wolfgang

Hallo Wolfgang,

was mir schon länger auf den Nägeln brennt:wofür ist diese ~ vor dem Substitute? Es geht doch auch ohne?
 
Hallo

...
he operator =~ is also used here to associate a string with s///. If matching against $_ , the $_ =~ can be dropped.

Latürnich ;) hast Recht.
Ist nur eine Angewohnheit von mir, die aber nicht schadet bzw. nichts bewirkt.
Wohl weil ich das oft mit Zuweisung verwende und es früher öfter mal vergessen hatte.

Gruß Wolfgang
 
du willst nicht \r\n entfernen, sondern nur \r. nur so als tipp.. dann sollten auch alle deine selbst erarbeiteten befehle funktionieren.

auf bald
oenone
 
Hallo
oenone schrieb:
du willst nicht \r\n entfernen, sondern nur \r. nur so als tipp.. dann sollten auch alle deine selbst erarbeiteten befehle funktionieren.

auf bald
oenone
Der Wunsch war aber ausdrücklich \r\n zu entfernen.
Sozusagen alle Zeilen die mit CRLF enden joinen.
Diesen Wunsch wollte ich ihn erfüllen. ;)

Alle \r ist ja nun doch zu einfach gelle ;)

Gruß Wolfgang
PS Das geht natürlich auch mit sed, da sollte man sich mal den g,x oder h Befehl ansehen.
 
wenn du alle \r\n entfernst, dann hast du gar keine zeilenumbrüche mehr.

auf bald
oenone
 
Wolfgang_1 hat schon recht mit seiner Interpretation, ich wollte \r\n, aber nicht \n entfernen. Da unter Unix der Zeilenumbruch aus \n besteht, bleiben noch welche uebrig, wenn ich \r\n entferne. Es gibt Zeilenumrueche
1) weil die Benutzer unter Windows durch druecken der return-Taste welche eingefuegt haben => \r\n
2) weil man mysql beim Exportieren jeden Tabelleneintrag mit einem abschliesst => \n, kein \r\n

Wie gesagt, hatte das Problem loesen koennen ueber mysqldump. Aber den Perl-Einzeiler von Wolfgang_1 werde ich mir trotzdem merken.
 
Zurück
Oben