Byta ut hexadecimala värden i fil

Trädvy Permalänk
Medlem
Registrerad
Mar 2003

Byta ut hexadecimala värden i fil

Hejsan. Jag håller på med ett litet projekt här och jag skulle behöva ett kommando som byter ut vissa värden i en fil med andra värden. Jag har en binär fil med en del data i. Nu vill jag byta ut några speciella bytes säg acde32 med ett textstycke jag grep:pat från en fil, säg dead17 (som ska skrivas som bytes, inte som text i filen). Byten jag vill byta ut är på ett och samma ställe så jag behöver inte söka igenom filen, jag vet vad jag vill byta ut. Hur kan jag göra detta på ett smidigt sätt?

Trädvy Permalänk
Medlem
Plats
Bollnäs
Registrerad
Maj 2002

valfri hexeditor?

Trädvy Permalänk
Medlem
Registrerad
Mar 2003
Citat:

Ursprungligen inskrivet av bogg
valfri hexeditor?

Det måste kunna scriptas.

Har kommit så här långt.

sed -i 's/\xb9\x58\x54\x5a/UTBYTE_HÄR/' packet.bin

Men hur kan jag få UTBYTE_HÄR att vara det jag vill, dvs det jag grep:at från en fil?

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Jul 2003

sed fil /regex/s//VAD_DU_VILL_HA/ > fil2

Trädvy Permalänk
Medlem
Registrerad
Mar 2003
Citat:

Ursprungligen inskrivet av Vijjje
sed fil /regex/s//VAD_DU_VILL_HA/ > fil2

Ok. Men säg att det ser ut så här:

cat text.txt \xf9\xa3\x32\x63

sed -i 's/\xb9\x58\x54\x5a/UTBYTE_HÄR/' packet.bin

Jag vill alltså byta ut \xb9\x58\x54\x5a i filen packet.bin med innehållet i text.txt.

EDIT: Jag lyckades.

cat text.txt \\xf9\\xa3\\x32\\x63

sed -i "s/\xb9\x58\x54\x5a/`cat text.txt`/" packet.bin

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Jul 2003

Ja det funkar men man måste escapa mellanrum, nyrad osv.

EDIT: Det har du vist redan märkt

Trädvy Permalänk
Medlem
Registrerad
Mar 2003

Någon som är bra på regular expressions?

cat test.txt |tr -d "\n"|sed -e "s/:0/:/1;s/[,|_| ]//g;s/.....:::/:::/g"

Hur kan jag göra det där kortare och bättre? Speciellt att inte behöva använda tr längre.