Чтобы преобразовать строку, представляющую шестнадцатеричное число для числового значения, вам необходимо 2 вещи: префикс строки с "0x"
и использовать функцию strtonum()
.
Чтобы продемонстрировать:
echo "0000e149 0000e152" | gawk '{
print $1, $1+0
print $2, $2+0
n1 = strtonum("0x" $1)
n2 = strtonum("0x" $2)
print $1, n1
print $2, n2
}'
0000e149 0
0000e152 0
0000e149 57673
0000e152 57682
Мы можем видеть, что наивно рассматривая строки как числа, AWK считает их значение 0. Это происходит потому, что цифры, предшествующие первые нецифровой случаются быть только нулями.
Ref: https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html
Обратите внимание, что StrToNum является расширением GNU AWK
не было, что просто сравнить строки "$ 1" на "$ 2"? Это то, что он делает на моем компьютере. – Jokyjo
О! Ты прав! Я обновил ответ. – hek2mgl