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

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

 $ cat x 1A34532112345 

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

 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 .

  • Каков порядок сортировки при использовании условных операторов?
  • Выполнить сложные команды по сценарию bash
  • Запрос Bash на запись в каждый каталог под некоторым путем и запуск команды, когда он внутри?
  • Bash: преобразовать строку (номер версии) в целое число
  • Попытка отправить несколько текстовых вложений через почтовое сообщение
  • Использование специального символа "и` в команде send в сценарии ожиданий
  • проверьте, успешно ли genisoimage
  • Создание дополнительного скрипта копирования и вставки
  • 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 - лучшая ОС в мире.