Byta ut hexadecimala värden i fil

Permalänk
Medlem

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?

Permalänk
Medlem

valfri hexeditor?

Visa signatur

Kör väl en klassisk signatur:
9900K @ 5GHz/128GB 3200MHz DDR4/3x1TB NVME/6800XT på Aorus Z390 Elite
Samsung C34F791, Svive 34C801, Xiaomi 34", Logitech MX Master 3 + G512...
Behöver för jobb, ej gamer.

Permalänk
Medlem
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?

Permalänk
Medlem

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

Permalänk
Medlem
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

Permalänk
Medlem

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

EDIT: Det har du vist redan märkt

Permalänk
Medlem

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.