Ausgabe in eine txt Datei.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Ausgabe in eine txt Datei.

Beitrag von Giskard » 14.12.2004 13:51:57

Hallo,

ich hab ein Script, welches eine art log Datei schreibt. Und zwar ganz einfach mit
echo "text" >> Datei.

Nun wird aber immer alles hintereinander geschrieben, wodurch die Datei sehr unübersichtlich wird.

Meine Frage ist nun, wie kann ich einen Zeilenumbruch am Ende jeder Zeile setzen?
Die Datei wird hauptsächlich unter windows mit dem Standard editor ausgelesen.

Vielendank für Hilfe!

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 14.12.2004 13:55:44

Code: Alles auswählen

beni@azrael:~$ echo "foo..." >> test.txt
beni@azrael:~$ echo "foo..." >> test.txt
beni@azrael:~$ echo "foo..." >> test.txt
beni@azrael:~$ echo "foo..." >> test.txt
beni@azrael:~$ echo "foo..." >> test.txt
beni@azrael:~$ cat test.txt
foo...
foo...
foo...
foo...
foo...
beni@azrael:~$
Also bei mir klappts ohne Probleme ;)

Spass beiseite, das Problem liegt daran, dass Windows "\r\n" als Zeilenumbruch deutet, bei Linux reicht aber schon ein "\n"

Du musst also den Zeilenumbruch manuell einfügen:

Code: Alles auswählen

echo "foo...\r\n" >> test.txt
ist jetzt aber ungetestet, müsste aber vond er Theorie her stimmen.

Benutzeravatar
QT
Beiträge: 1336
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 14.12.2004 13:59:00

Nimm auf Windows einen Editor wie zB UltraEdit der auch den UNIX Zeilenumbruch handeln kann oder alternativ die Datei per ASCII FTP auf den Windowshost uebertragen, wodurch die LF durch CRLF ersetzt werden.

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 14.12.2004 15:01:51

Hallo,

Das mit \r\n funktioniert leider nicht.
Er schriebt dann in die Text Datei direckt \r\n.
Bei jedem eigentlichen Zeilen umbruch ist dieses Kästchen. Das Zeichen, für ein Unbekanntes Zeichen.

@QT Die Datei wird überhaupt nicht übertragen, sondern liegt auf einem Linux Server, auf dem Samba läuft.

Wenn ich die Datei mit z.B. WordPad öffne werden die Zeilen umbrüche angezeigt. Aber es muss doch auch möglich sein, dass edit.exe sie als Zeilenumbruch interpretiert.

Danke für Hilfe!

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 14.12.2004 15:09:10

hm, du musst irgendwie das \r\n so maskieren, dass es nicht als string sondern als zeichen interpretiert wird.
Aber wie genau das jetzt geht, weiss ich leider auch nicht auf anhieb...
oder wie gesagt, einen vernünftigen editor verwenden ;)

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

Beitrag von gms » 14.12.2004 15:25:18

wenn du mit echo eine datei im dos-format erstellen möchtest, mußt du die Umbrüche selber einfügen:

Code: Alles auswählen

echo -en "hello\r\nworld\r\n" >x.txt

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 14.12.2004 16:04:35

Hi,

Das -e hat gefehlt. Jetzt klappt es auch mit \r\n

Danke schön!!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 14.12.2004 16:18:30

Nimm einfach statt notepad wordpad. Das kann UNIX-Textdateien richtig lesen.

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

Beitrag von gms » 14.12.2004 16:47:53

Giskard hat geschrieben:Wenn ich die Datei mit z.B. WordPad öffne werden die Zeilen umbrüche angezeigt. Aber es muss doch auch möglich sein, dass edit.exe sie als Zeilenumbruch interpretiert.
!
er möchte aber edit.exe verwenden :)

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 14.12.2004 17:18:00

Hi,

du kannst auch unix2dos bzw todos verwenden um die Dateien windowstauglich zu machen, bevor du die Dateien in Windows öffnest.
Das Tool ist im paket sysutils.


Gruß

Dookie

Antworten