Как избежать шестнадцатеричных непечатаемых символов в потоке в Linux?Linux

Ответить
Anonymous
 Как избежать шестнадцатеричных непечатаемых символов в потоке в Linux?

Сообщение Anonymous »

Я работаю над обычной системой GNU Linux со стандартными инструментами, доступными в coreutils и тому подобном. Каким будет простой и эффективный способ преобразования непечатаемых последовательностей из случайного потока в шестнадцатеричные последовательности?
Давайте возьмем двоичный файл wtmp. В идеале я бы хотел:

Код: Выделить всё

$ dd if=/var/log/wtmp bs=1 count=20 status=none | somecommand
\x02\x00\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
Самое близкое, что я смог придумать, это Python, но b' ' все равно придется удалить. Есть ли какой-нибудь инструмент в оболочке или coreutils, который делает это и не является Python?

Код: Выделить всё

 $ dd if=/var/log/wtmp bs=1 count=20 status=none | python -c 'import sys;print(sys.stdin.buffer.read())'
b'\x02\x00\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Есть ли что-то простое, например cat -v, которое просто генерирует шестнадцатеричные escape-символы вместо последовательностей курсоров?
Я знаю о xxd -i и hexdump -e '"%_c"'. Возможно ли сделать, чтобы затем использовать \x и экранировать только непечатаемые символы?
Я пробовал исследовать, но мой Google-фу в основном заканчивается сообщениями о преобразовании шестнадцатеричного кода в ascii в bash, а я хочу наоборот. Мне не удалось найти или придумать удовлетворительное решение.

Подробнее здесь: https://stackoverflow.com/questions/788 ... m-on-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»