распечатать файл в шестнадцатеричном формате с помощью 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
  • KSH - если / then / else против двойных усилителей (&&) и двойных труб (||)
  • bashscript для нажатия клавиши со стрелкой вправо
  • Как экспортировать функцию, определенную eval?
  • Конец трубы, когда программа возвращает более 1 строки
  • Как избежать столкновения / загрязнения пространства имен в сценарии, предназначенном для поиска?
  • 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 - лучшая ОС в мире.