awk 没有给出期望的结果

问题描述 投票:0回答:1

我有以下数据:“210000000080401”。 我需要将十六进制“210000000080401”转换为十进制形式。

使用 awk 没有给出正确的结果:

echo 210000000080401|awk -Wposix '{printf "%d %s\n", "0x" $1, $0}'
148618787703751680 210000000080401

正确的值为:148618787703751681

echo 210000000080401 | tr '[:lower:]' '[:upper:]'|xargs -i{} bash -c 'printf "%d\n" 0x{}'
148618787703751681

为什么 awk 没有给出正确的 o/p ?

shell awk
1个回答
0
投票

POSIX awk 没有将字符串转换为数字的函数,因此不要告诉 gawk 禁用它的扩展并仅使用 POSIX 功能:

$ echo 210000000080401|awk '{printf "%d %s\n", strtonum("0x" $1), $0}'
148618787703751680 210000000080401

如果 POSIX 中存在该功能,那么 GNU awk 人们就不必创建扩展来完成它。

© www.soinside.com 2019 - 2024. All rights reserved.