Forum: PC-Programmierung Letztes Byte einer Datei entfernen, Linux Hausmittel ?


von Gast (Gast)


Lesenswert?

#!/bin/sh
sed -i 's/.$//' $1

Leider scheint das . nicht auf NULL anzusprechen.

von Klaus W. (mfgkw)


Lesenswert?

Willst du das letzte Byte der gesamten Datei entfernen, oder das letzte 
Byte jeder Zeile?

von Gast (Gast)


Lesenswert?

Der gesamten Datei

von Sven P. (Gast)


Lesenswert?

Musste zwar rechnen, aber mit dd gehts.

von Klaus W. (mfgkw)


Lesenswert?

Wenn es nur das allerletzte Byte wegnehmen soll, muß man sed sagen, daß 
es nur die letzte Zeile anfassen soll ($ als Adressangabe vor dem s...):
1
if [ "$1" != "" ]
2
then
3
    sed -i -e "\$s/.$//" $1
4
else
5
    echo mangels Argument nichts zu tun
6
fi

dd ist aber sicher geeigneter bei Binärdateien; sed arbeitet 
zeilenweise.
Oder man rechnet und nimmt head -c ...

von Gast (Gast)


Lesenswert?

Klappt nicht, das . ist kein Match mit 0x00

head --bytes=-1 $1 > out

funktioniert auch ohne rechnen (stat -c %s $1) allerdings müsste man das 
inputfile irgendwie überschreiben können..

vielleicht so

cat $1 | head --bytes=-1 > $1

von Chris (Gast)


Lesenswert?

Eine andere Möglichkeit wäre das Programm "truncate", das seit kurzem in 
den coreutils ist:
http://www.gnu.org/software/coreutils/manual/coreutils.html#truncate-invocation

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.