Bash 使用awk将十进制数移位9位(不能使用gawk lshift)
我需要将十进制数左移9位,并以十六进制打印结果 这里有一个例子:Bash 使用awk将十进制数移位9位(不能使用gawk lshift),bash,awk,hex,printf,shift,Bash,Awk,Hex,Printf,Shift,我需要将十进制数左移9位,并以十六进制打印结果 这里有一个例子: # Desired result: perl -e "printf('%x', (99 << 9))"; echo; c600 # Use case: awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", d, d }' Decimal: 99, Hexadecimal: 63 # Must be left shift by 9 (c600) #期望的
# Desired result:
perl -e "printf('%x', (99 << 9))"; echo;
c600
# Use case:
awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", d, d }'
Decimal: 99, Hexadecimal: 63 # Must be left shift by 9 (c600)
#期望的结果:
perl-e“printf('%x',(99不需要awk,您可以在bash中使用printf
来实现这一点:
printf "%x\n" $((99 << 9))
c600
不需要awk,您可以在bash中使用printf
:
printf "%x\n" $((99 << 9))
c600
除非精度有限,否则左移9等于乘以2^9=512:
$ awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", 512*d, 512*d) }'
Decimal: 50688, Hexadecimal: c600
除非精度有限,否则左移9等于乘以2^9=512:
$ awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", 512*d, 512*d) }'
Decimal: 50688, Hexadecimal: c600
使用awk对我来说是强制性的,对于lshift:awk:line 2:函数lshift从未定义,但感谢您的帮助lshift
可用于gnu awk,而不是旧的awky。您肯定有一个从awk到gawk的/etc/default/symbolic链接。^@anubhavaNo我没有。我使用OSX并将BSD awk与gawk分开保存(通过自制安装)使用awk对我来说是强制性的,对于lshift:awk:line 2:函数lshift从未定义,但感谢您的帮助lshift
可用于gnu awk,而不是旧的awky。您肯定有一个从awk到gawk的/etc/default/symbolic链接。^@anubhavaNo我没有。我使用OSX并将BSD awk与gawk分开保存(通过自制安装)