Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Martin Šácha 21 Února 2013, 20:12:02

Název: Výřez binárního blobu neznámé délky
Přispěvatel: Martin Šácha 21 Února 2013, 20:12:02
Ahoj,
necht program generuje vystup na stdout v nasledujicim tvaru:
Kód: [Vybrat]
...
Raw result:
<binarni blob>

Parsed result:
...

Me zajima jenom ten binarni blob *nezname delky (radove desitky B) a muze obsahovat cokoliv (konce radku, 0x00, ...).

Zatim mam takovyhle "hnus" (orez shora a zdola a odstaneni popisku)
Kód: [Vybrat]
cat ./dump | grep -A 100 -B 0 --binary-files=text -e "Raw result:" | grep -A 0 -B 100 --binary-files=text -e "Parsed result:" | grep -v --binary-files=text -e "Raw result:" | grep -v --binary-files=text -e "Parsed result:"

Problem je, ze neumim odstranit posledni konec radku (ktery tam necha grep), sed mi zatim vzdycky vynadal ze s binarnim souborem se nekamaradi...

Dik za pomoc :)
Název: Re:Výřez binárního blobu neznámé délky
Přispěvatel: daysleeper 21 Února 2013, 22:07:37
Pomocí grepu (offset) a dd např.
Kód: [Vybrat]
start=$(($(grep -abo -m1 "Raw result:" file | cut -d: -f1) + 12))
count=$(($(grep -abo -m1 "Parsed result:" file | cut -d: -f1) - $start - 1))
dd if=file bs=1 skip=$start count=$count
Ale lepší by snad bylo použít nějaký binary sed (bbe) nebo programovací jazyk, ne?
Název: Re:Výřez binárního blobu neznámé délky
Přispěvatel: Martin Šácha 22 Února 2013, 20:10:30
Jo, to vypada ze funguje, diky:)
Jasne ze bych mohl neco spachat treba v C, ale kdo se s tim ma porad kompilovat...