понедельник, 25 мая 2020 г.

Linux: заменить в файле байты со значением 0x56 на байт со значением 0x65

Задача: поменять в файле file.bin у всех байтов равных, скажем, 0x56 значение на 0x65.

Решение:
xxd -p < file.bin | fold -w2 | sed 's/56/65/g' | xxd -p -r > patched_file.bin

По порядку:

xxd -p < file.bin - печатает содержимое файла file.bin в текстовом виде: "1256340021..."

fold -w2 - разбивает входную строку на строки по два символа:
12
56
34
00
21
...

sed 's/56/65/g' - меняет 56 на 65

xxd -p -r > patched_file.bin - восстанавливает байты обратно из их значений в текстовом виде

Литература:
https://www.commandlinefu.com/commands/view/194/binary-searchreplace

Комментариев нет:

Отправить комментарий