распечатать файл в шестнадцатеричном формате с помощью awk

У меня есть имя файла x

 $ cat x 1A34532112345 

Я хочу печатать в шестнадцатеричном формате, используя awk Я написал сценарий (с помощью веб-страницы)

  • «Scope.sh» отсутствует для файлового менеджера ranger
  • Любой способ в Bash писать в файл каждые X секунд, не закрывая его?
  • Является ли поведение AWK END, чтобы последняя строка загружалась в $ 0 на странице руководства?
  • Использование `kill -s 0 $ pid` vs` ] `, чтобы определить, работает ли PID
  • Доступ к номеру / переменной итерации расширения bash
  • как добавить файл в ipset в сценарий оболочки?
  •  fold -1 /home/cscape/Desktop/x | gawk '{ printf("%s , %X\n",$0, int($0) )}' 

    Но вывод для каждого символа равен 0

     $ fold -1 /home/cscape/Desktop/x | gawk '{ printf("%s , %X\n",$0, int($0) )}' 1 , 1 A , 0 3 , 3 4 , 4 5 , 5 3 , 3 2 , 2 1 , 1 1 , 1 2 , 2 3 , 3 4 , 4 5 , 5 

    Почему 0 для A даже с %d . Я хочу напечатать ASCII значение A как HEX .

  • Запустить скрипт после загрузки рабочего стола
  • Функции, определенные в .zshrc, не найдены при запуске скрипта
  • Как использовать расширенное значение переменной оболочки в имени другой переменной?
  • Как загрузить много документов на терминал с сервера?
  • Запустить RDP беззвучно?
  • Зацикливание через массив оболочки, заданный как параметр
  • 2 Solutions collect form web for “распечатать файл в шестнадцатеричном формате с помощью awk”

    awk будет молча преобразовывать строки в числа. Какой номер? Число, которое вы получаете, беря начальные десятичные цифры строки (это может быть просто "" , если строка пуста или не начинается с каких-либо десятичных цифр, как в случае с "A" ) и преобразует их в номер. "" преобразуется в 0 . Таким образом, все они будут преобразованы в 0 :

    • "0"
    • "0text"
    • "текст"
    • «»

    awk только преобразует строки в числа таким образом, когда требуется число. В "0text" + 1 требуется число, поэтому результат будет равен 1 . В простом "0text" число не требуется, поэтому никакого преобразования не происходит. В printf("%d", "0text") снова требуется число, поэтому строка будет преобразована в число.

    То, что вы ищете, является функцией ord , которая не является нативной функцией в awk. Документация gawk описывает, как написать такую ​​функцию в awk.

    Если вам не нужно использовать awk, вы можете посмотреть на od («восьмеричная дамп»):

     $ echo 1A34532112345 | od -t x1 0000000 31 41 33 34 35 33 32 31 31 32 33 34 35 0a 0000016 
    Linux и Unix - лучшая ОС в мире.