Как создать шестнадцатеричный дамп файла, содержащего только шестнадцатеричные символы без пробелов в bash? - PullRequest
169 голосов
/ 11 апреля 2010

Как мне создать неизмененный шестнадцатеричный дамп двоичного файла в Linux, используя bash?Команды od и hexdump обе вставляют пробелы в дамп, и это не идеально.

Есть ли способ просто написать длинную строку со всеми шестнадцатеричными символами, минус пробелами или символами новой строки в выводе

Ответы [ 5 ]

231 голосов
/ 11 апреля 2010

xxd -p file

Или, если хотите, все это в одной строке:

xxd -p file | tr -d '\n'

81 голосов
/ 11 апреля 2010

Форматирование строк может привести к тому, что hexdump будет вести себя именно так, как вы этого хотите (без пробелов вообще, побайтно):

hexdump -ve '1/1 "%.2x"'

1/1 означает «каждый формат применяется один раз и занимает один байт», а "%.2x" - фактическая строка формата, как в printf. В этом случае: двухзначное шестнадцатеричное число, ведущие нули, если короче.

22 голосов
/ 11 апреля 2010

Кажется, это зависит от деталей версии od. На OSX используйте это:

od -t x1 -An file |tr -d '\n '

(Это печатается как шестнадцатеричные байты типа, без адреса. И пробел, конечно, удаляется впоследствии.)

8 голосов
/ 11 апреля 2010

Perl однострочный:

perl -e 'local $/; print unpack "H*", <>' file
2 голосов
/ 11 апреля 2010

Другие ответы предпочтительнее, но для чистого решения Bash я изменил скрипт в мой ответ здесь , чтобы иметь возможность выводить непрерывный поток шестнадцатеричных символов, представляющих содержимое файла. (Обычный режим - эмуляция hexdump -C.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...