Как удалить все, кроме номера, из вывода hexdump?

Я сам столкнулся с этой проблемой. У меня был установлен «libboost1.48-dev», который похож на ваш случай, когда у вас есть «libboost1.48-python-dev».

Вы хотите установить libboost1.48-all-dev, а не libboost-all-dev , Последнее - версия 1.46, которая несовместима с уже установленной libboost1.48-python-dev. В качестве альтернативы вы можете удалить libboost1.48-python-dev и установить libboost-all-dev, если хотите вернуться к v1.46.
1
задан 12 April 2016 в 10:57

2 ответа

Используйте hexdump, определяя настраиваемый формат вывода:

hexdump -ve '8/1 "%04x " "\n"'
-v: печатает все данные (устраняет звездочки, что означает повторение последней строки вывода) -e '8/1 "%04x " "\n"' : печатает 8 раз по одному байту с нумерованным (до четырех цифр) строчным шестнадцатеричным представлением с последующим пространством aa и добавляет новую строку, пока не будет доступно больше данных.
% </dev/urandom head -c 32 | hexdump -ve '8/1 "%04x " "\n"'
003c 00b0 00bb 00de 003d 0041 0072 00a5
00c2 0078 00b9 009b 00b7 00fc 0076 0030
00b7 005c 00f4 0036 00a0 004e 003b 001b
0028 00cd 006a 0079 0055 0014 000c 007b

Я не уверен, почему вы хотите это сделать, но, видимо, вы хотите распечатать все на одной строке без пробелов.

Если это так:

hexdump -ve '/1 "%04x"'
% </dev/urandom head -c 32 | hexdump -ve '/1 "%04x"'
0046007c00b2003300e0009b00eb00d500bf006900570081008e003e005a002f0024001700ab00000084001e00ad00ab003a004800bf0039005c00aa00030072%
% 
4
ответ дан 23 May 2018 в 12:14

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

Предположительно, вам нужно число, которое однозначно представляет исходный файл, поэтому вам нужно будет начать с hexdump -v. Как показано в предыдущем ответе, можно дать hexdump другие аргументы, чтобы изменить формат вывода в запрошенный формат.

Однако, если у вас по какой-то причине есть только вывод hexdump -v, а не исходный файл, также можно было бы удалить первый столбец и белое пространство следующим образом:

cat filename.txt | cut -c9- | tr -dc 0-9a-f

Здесь cut -c9- удалит самые левые 8 символов каждой строки, выводя только 9-й символ и все после него. И tr -dc 0-9a-f будет содержать только символы в диапазоне 0-9 или a-f, поэтому все пробелы и новые строки удаляются.

2
ответ дан 23 May 2018 в 12:14

Другие вопросы по тегам:

Похожие вопросы: