Як розділити двійковий файл на основі шаблону?


5

Я хотів би розділити двійковий файл на менші файли на основі шаблону "xÚ" (це шістнадцятковий 78 DA), тож коли у файлі є "xÚ", сценарій сплітера розбивається і вставляє вміст у новий файл до іншого " xÚ 'можна знайти. Новостворені файли повинні починатися як "xÚ".

FreeBSD awk, grep, shкращим.

Відповіді:


2

Редагувати:

Ок, ось прибирання цього безладу:

awk 'BEGIN { RS=""; FS=/\x78\xda/ } { for (i = 1; i <= NF; i++) print $i > i }' YOUR_BIN_FILE

Порожній RS все ще може спричинити несподівані результати, оскільки він робить неповторними окремі записи в порожніх рядках. Насправді важко обійти розбиття файлу на записи. Один із способів вирішити це - встановити сепаратор записів на деяку модель, яку немає у файлі. Іншим способом було б відокремлення записів до 78da та обробка кожного запису.


3
Ти міг би echo "78da$i" | xxd .... Вам не потрібно cat: xxd -ps -c $FILESIZE $MY_BINARY. Ви , можливо , буде потрібно встановити RSна нуль в AWK , щоб зберегти його від поділу на \x0a: BEGIN {RS=""}. Ви можете полегшити перекомпіляцію файлів, якщо ви використовуєте printfдля форматування файлів: outfile=$(printf "outfile.%04d" $COUNT)(імена файлів будуть мати вигляд "outfile.0001"). Вам не потрібно перенаправлення для виведення з xxd -r: xxd -r -ps -c $FILESIZE - $outfile.
Денніс Вільямсон

Мені подобається моя кішка;) Мені потрібен натяк, щоб спорожнити РС, дякую! Я видалив безлад, який спричинив кровотечу в очах.
matthias krull
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.