BSDForen.de  

Zurück   BSDForen.de > FreeBSD > FreeBSD - Allgemein

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 08.02.2006, 14:33   #1
testit
Registered User
 
Registrierungsdatum: Aug 2005
Beiträge: 441
Umwandlung von Dateien im DOS-Format -> UNIX

Hallo,

leider hat mir WS_FTP 2006 - anders als der Vorgänger - einiges auf meinem Server durcheinander gebracht, indem er downgeloadete Dateien mit CR/LF versetzte und beim Rückspielen so beliess.

Auswirkungen hatte das Ganze nur in ganz bestimmten Fällen bei PHP-Applikationen.

Hat jemand ein Script oder einen Ausdruck parat, mit dem ich in einem Verzeichnis nebst Unterverzeichnissen in allen betroffenen Dateien, CR/LF durch LF ersetzen lassen kann.

Die Dateien mit CR/LF sollen also automatisch gefunden und die Ersetzungen in den Dateien vorgenommen werden.

find . -type f -name "*.*" | xargs perl -pi -e 's/SUCH/ERSETZ/g'
könnte hinhauen, aber ich bin nicht im Bilde, wie in SUCH und ERSETZ CR/LF und LF abzubilden sind?

Danke und Gruss
testit
testit ist offline   Mit Zitat antworten
Alt 08.02.2006, 14:36   #2
xbit
Keyboard Junkie
 
Registrierungsdatum: Aug 2005
Ort: Hamburg
Beiträge: 540
Unix Zeilenende: \n
Windows Zeilenende: \r\n

Ansonsten kannte ich noch immer recode. Ich weiss nur leider nicht, ob das als Port irgendwie existiert oder im
System schon vorhanden ist.
xbit ist offline   Mit Zitat antworten
Alt 08.02.2006, 14:43   #3
Ice
Registered User
 
Benutzerbild von Ice
 
Registrierungsdatum: Nov 2003
Beiträge: 1.252
In den Ports gibt es ein recht nettes Helferlein:

/usr/ports/converters/dosunix

Gruß,

Ice
Ice ist offline   Mit Zitat antworten
Alt 08.02.2006, 14:43   #4
markus
Registered User
 
Benutzerbild von markus
 
Registrierungsdatum: May 2004
Ort: Dortmund
Beiträge: 141
Um mal nen fortunes Eintrag zu zitieren:
Code:
Need to remove all those ^M characters from a DOS file? Try tr -d \\r < dosfile > newfile -- Originally by Dru <genesis@istar.ca>
markus ist offline   Mit Zitat antworten
Alt 08.02.2006, 17:10   #5
dettus
Bicycle User
 
Benutzerbild von dettus
 
Registrierungsdatum: Aug 2004
Ort: nuernberg
Beiträge: 2.532
Code:
% dos2unix filename
__________________
Computer science is not about using a computer. It is about unleashing its powers.
dettus ist offline   Mit Zitat antworten
Alt 08.02.2006, 17:28   #6
ookami
Kette rechts!
 
Registrierungsdatum: Feb 2003
Ort: Hanau, Hessen
Beiträge: 333
Code:
vim filename :set ff=unix :wq
__________________
„Dogmen, und ich meine nicht nur religiöse, zerstören die Welt und machen uns alle dümmer.“
– Bobby Henderson
ookami ist offline   Mit Zitat antworten
Alt 08.02.2006, 19:34   #7
Th0min4tor
OS-Wechselwähler
 
Benutzerbild von Th0min4tor
 
Registrierungsdatum: Jan 2005
Beiträge: 94
Zitat:
Zitat von dettus
Code:
% dos2unix filename
das is aber nicht "standardmäßig" bei ner freebsd-installation dabei oda?
Egal, jedenfalls wollt ich noch hinzufügen, dass es in /ports/converters/unix2dos zu finden is (ein dos2unix-port gibts nicht -> beim unix2dos-port is dos2unix mit dabei)
Th0min4tor ist offline   Mit Zitat antworten
Alt 08.02.2006, 20:03   #8
testit
Registered User
 
Registrierungsdatum: Aug 2005
Beiträge: 441
Ich danke Euch!

Eine Eurer Lösungen wird sicherlich hinhauen


Nette Grüsse
testit
testit ist offline   Mit Zitat antworten
Alt 08.02.2006, 20:23   #9
testit
Registered User
 
Registrierungsdatum: Aug 2005
Beiträge: 441
Zitat:
Zitat von xbit
Unix Zeilenende: \n
Windows Zeilenende: \r\n

Ansonsten kannte ich noch immer recode. Ich weiss nur leider nicht, ob das als Port irgendwie existiert oder im
System schon vorhanden ist.
Hi,

find . -type f -name "*.php" | xargs grep -l \r\n
listet offenbar DIE PHP-Datein auf, die im Quellcode als ASCII \r\n enthalten.

\r\n wird offensichtlich so nicht als "nicht sichtbare" Zeichen interpretiert.


Gruss
testit
testit ist offline   Mit Zitat antworten
Alt 08.02.2006, 20:38   #10
tschepe
Registered User
 
Registrierungsdatum: Mar 2004
Beiträge: 193
Du musst die \n und \r Escapen, sonst wandelt deine shell die Zeichen um.

Code:
find . -type f -name "*.php" | xargs grep -l "\r\n"
oder:

Code:
find . -type f -name "*.php" | xargs grep -l \\r\\n
tschepe ist offline   Mit Zitat antworten
Alt 08.02.2006, 20:48   #11
testit
Registered User
 
Registrierungsdatum: Aug 2005
Beiträge: 441
Zitat:
Zitat von tschepe
Du musst die \n und \r Escapen, sonst wandelt deine shell die Zeichen um.

Code:
find . -type f -name "*.php" | xargs grep -l "\r\n"
oder:

Code:
find . -type f -name "*.php" | xargs grep -l \\r\\n
Hmm,

das haut leider nicht hin!

Habe mir eine Testdatei "zeilentest.txt" angelegt, die mit vi so aussieht:
^M

Das ^M muss ich wegbekommen, aber leider erkennt
find . -type f -name "*.php" | xargs grep -l \\r\\n
das Vorkommen von ^M in der Testdatei nicht!

Was mich auch verwirrt:
find . -type f -name "zeilentest.txt" | xargs grep -l '\r'
ergibt NULL Treffer!

od -c zeilentest.txt gibt aus:
\r \n \r \n

Und
perl -p -i -e 's/\r//g' zeilentest.txt
löscht tatsächlich die ^M

Wieso greift dann
find . -type f -name "zeilentest.txt" | xargs grep -l '\r'
nicht?

Gruss
testit

Geändert von testit (08.02.2006 um 21:08 Uhr).
testit ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Die Geschichte von BSD (bzw. UNIX) asg News 31 11.05.2006 20:20
Postfix Transport Open Relay Problem strongarm FreeBSD - Anwendungen und Ports 4 03.01.2006 12:10
Bild in Email wirt nicht dagestellt, Anhänge teilweise zerstört vanedler FreeBSD - Anwendungen und Ports 6 03.04.2005 09:36
Postfix + SASLv2 + MySQL + Courier-IMAP Bummibaer FreeBSD - Anwendungen und Ports 42 05.01.2005 22:39
Zehn kleine UNIX Zeilen Maledictus Geplauder 2 08.03.2004 15:10


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.