Zeile anhängen in Textdatei
Zeile anhängen in Textdatei
Hi,
habe folgendes Problem: Ich möchte Textdateien eine neue Zeile anhängen. Jedoch habe ich das Problem, dass manche Dateien ein CR-LF am Ende haben andere nicht. (Dateien kommen aus Windows). Wenn ich nun per cat x >> y die Datei anhänge funktioniert das nur bei den Dateien mit CR-LF am Ende, bei den anderen schreibt er es hinter den letzten Eintrag.
Wie kann ich in einem Script alle Dateien in eine neue Zeile schreiben?
habe folgendes Problem: Ich möchte Textdateien eine neue Zeile anhängen. Jedoch habe ich das Problem, dass manche Dateien ein CR-LF am Ende haben andere nicht. (Dateien kommen aus Windows). Wenn ich nun per cat x >> y die Datei anhänge funktioniert das nur bei den Dateien mit CR-LF am Ende, bei den anderen schreibt er es hinter den letzten Eintrag.
Wie kann ich in einem Script alle Dateien in eine neue Zeile schreiben?
hi,
sowas hier funktioniert vielleicht:
sowas hier funktioniert vielleicht:
Code: Alles auswählen
#!/bin/bash
#
# haengt CR und LF an eine Datei an, wenn sie nicht sowieso schon so endet
# die Groesse der Datei
BYTES=`stat -c%s "$1"`
# (fast) leere Dateien und solche, bei denen stat nicht funktioniert hat,
# werden stillschweigend ignoriert
test $(($BYTES)) -lt 2 && exit
# die letzten beiden Zeichen als Klartext
ENDE="`od -a -A n -j $(($BYTES - 2)) "$1"`"
# wenn die letzten beiden nicht CR und LF sind, werden CR und LF angehaengt.
test "$ENDE" != " cr nl" && echo -e "\r" >> "$1"
Beware of programmers who carry screwdrivers.
moin, moin,
da hab' ich wohl was nicht verstanden; poste doch bitte mal das Ende jeweils einer
"guten" und einer "schlechten" Datei im Originalzustand. Am besten so:
da hab' ich wohl was nicht verstanden; poste doch bitte mal das Ende jeweils einer
"guten" und einer "schlechten" Datei im Originalzustand. Am besten so:
Code: Alles auswählen
tail -c5 richtige.daten | od -a -A n
tail -c5 falsche.daten | od -a -A n
Beware of programmers who carry screwdrivers.
- Mr_Snede
- Beiträge: 2323
- Registriert: 08.07.2003 13:48:49
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Ruhrpott
Schau dir malgeriom hat geschrieben:Hi,
ich weis zwar nicht was die Zeichen bedeuten, aber hier die Zeilen:
Code: Alles auswählen
tail --help
Code: Alles auswählen
od --help
Code: Alles auswählen
|
Software Finder - Software in Kategorien Debian ohne Ballast - Tipps für ein schlankes Debian
naja, die bedeuten, dass die gute Datei mit CR-LF aufhört und die schlechte nicht...geriom hat geschrieben:Hi,
ich weis zwar nicht was die Zeichen bedeuten, aber hier die Zeilen:
gute Datei: l e n cr nl
schlechte Datei: a y e r n
In diesem Zusammenhang bedeuten "nl" und "LF" dasselbe.
und ich erstIch hoffe dies nützt was.
neuer Versuch:
Code: Alles auswählen
#!/bin/bash
#
# haengt CR und LF an eine Datei an, wenn sie nicht mit LF endet
# die Groesse der Datei
BYTES=`stat -c%s "$1"`
# (fast) leere Dateien und solche, bei denen stat nicht funktioniert hat,
# werden stillschweigend ignoriert
test $(($BYTES)) -lt 2 && exit
# das letzte Zeichen als Klartext
ENDE=`od -a -A n -j $(($BYTES - 1)) "$1"`
# wenn es kein LF ist, werden CR und LF angehaengt.
test $ENDE != "nl" && echo -e "\r" >> "$1"
Beware of programmers who carry screwdrivers.