sed macht Zeilenumbruch kaputt?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
bernostern
Beiträge: 121
Registriert: 19.10.2003 13:21:12

sed macht Zeilenumbruch kaputt?

Beitrag von bernostern » 19.04.2006 17:10:00

Hallo,

ich habe eine Konfigurationsdatei. In dieser Datei ersetze ich mit sed eine best. Zeile mit einer neuen.
Danach funkt der Dienst, der die Konfigdatei verwendet, nicht mehr. Wenn ich die Datei im vi ansehe, dann fehlt bei der Zeile, die ich mit sed bearbeitet habe, der Zeilenumbruch (oder was auch immer, es fehlt das ^M am Schluss). Alle anderen Zeilen haben im vi am Schluss ein ^M haben, meine aber nicht (mehr).

Wo liegt mein Problem?

Danke und schöne Grüße,
Bern

P.s: Bin kein sed Profi...

randall
Beiträge: 82
Registriert: 24.11.2005 21:36:28

Beitrag von randall » 19.04.2006 17:19:44

Wie sieht denn die Perl regex aus, mit dem Du die Datei bearbeitetest ? Oder am Besten die ganze Kommandozeile.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 19.04.2006 17:26:05

Die Dateien mit ^M am Ende sind im Dos/Windows Textformat
Du kannst entweder am Ende der Zeile ein "\r" einfügen oder die Datei mit "dos2unix" bzw "unix2dos" umwandeln.

Gruß
gms

bernostern
Beiträge: 121
Registriert: 19.10.2003 13:21:12

Beitrag von bernostern » 19.04.2006 22:03:29

Danke,

dos2unix und unix2dos sind genau das was ich brauche.

Also ist nun auch klar, dass vi das ja anscheinend korrekt anzeigt, nur der Rest ist eben DOS.

D.h. sed macht keine Zeilenumbruche kaputt sondern mein Hirn ist putt...
Entschuldigung sed :-)


Danke und schöne

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 19.04.2006 22:11:03

sed wird schon ärgeren Verdächtigungen ausgesetzt worde sein :)

übrigens, so kannst du dos2unix und unix2dos durch sed ersetzen:

Code: Alles auswählen

gms@gms1:~$ cat x.txt | sed -e 's/$/\r/' >dos.txt
gms@gms1:~$ cat dos.txt | sed -e 's/\r//' >unix.txt
Gruß
gms

Antworten