Как распечатать только шестнадцатеричные значения из шестнадцатеричного дампа без номеров строк или таблицы ASCII?

следующий Преобразование десятичного числа в шестнадцатеричное в сценарии оболочки UNIX

Я пытаюсь распечатать только hex values из hexdump, т.е. не печатать номера строк и таблицу ASCII.

Но следующая командная строка ничего не печатает:

hexdump -n 50 -Cs 10 file.bin |  awk '{for(i=NF-17; i>2; --i) print $i}'

person 0x90    schedule 21.03.2013    source источник
comment
возраст не является основным фактором, а скорее количество голосов и качество ответов ;-) meta.stackoverflow.com/questions/251938/   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 04.09.2015
comment
hexdump file.bin | sed s / [^] * // 1 Это удалит номера строк, по умолчанию таблица ascii не будет печататься.   -  person Owl    schedule 18.07.2017


Ответы (4)


Вы можете указать точный формат, который вы хотите hexdump использовать для вывода, но это немного сложно. Вот результат по умолчанию без смещения файлов:

hexdump -e '16/1 "%02x " "\n"' file.bin

(Мне кажется, что это приведет к появлению дополнительного конечного пробела в конце каждой строки, но по какой-то причине этого не происходит.)

person chepner    schedule 21.03.2013
comment
Здорово!! Пригодился мне этот ответ! Но я думаю, что лучше также иметь -C вариант. И если вы добавите cut -c 9- | head -n 1, в вашем выводе будут отображаться только шестнадцатеричные числа. - person Kyrol; 21.04.2015
comment
В этой записи блога показано больше примеров того, как изменить выходной формат hexdump. - person Matthias Braun; 09.01.2021

Для этой работы лучше использовать xxd:

xxd -p -l 50 -seek 10 file.bin

Из man xxd:

xxd - make a hexdump or do the reverse.

    -p | -ps | -postscript | -plain
        output in postscript continuous hexdump style. Also known as plain hexdump style.

    -l len | -len len
        stop after writing <len> octets.

    -seek offset
        When used after -r: revert with <offset> added to file positions found in hexdump.
person 0x90    schedule 21.03.2013
comment
@andsens hexdump находится в занятом ящике и, следовательно, доступен во встроенном ПО, а xxd - нет: Ь - person Hi-Angel; 24.07.2015

В качестве альтернативы рассмотрите возможность использования xxd -p file.bin.

person twalberg    schedule 21.03.2013

Прежде всего удалите -C, который передает информацию ascii.

Затем вы можете сбросить смещение с помощью

hexdump -n 50 -s 10 file.bin | cut -c 9-
person glenn jackman    schedule 21.03.2013
comment
вроде работает, но меняет порядок байтов ... - person 0x90; 21.03.2013