awk 在解析数字时是否总是丢弃尾随字符?

awk 在解析数字时是否总是丢弃尾随字符?

awk需要解析百分比数字(带有尾随“%”)并检查它们是否超过特定百分比。

正常解析只是忽略任何尾随字符,例如:

% echo "99%" | awk '{print ($1 + 0)}'
99

当然,由e和 数字组成的字符串除外:

echo "99e4" | awk '{print ($1 + 0)}'                 
990000

这种行为是否稳定并且对于不同的 s 是相同的awk,还是建议显式删除%

答案1

是的,这是跨 AWK 实现的稳定行为。它记录在GNU AWK 手册如下:

通过将字符串的任何数字前缀解释为数字,将字符串转换为数字:"2.5"转换为 2.5、"1e3"转换为 1,000、"25fix"数值为 25。无法解释为有效数字的字符串将转换为零。

它还记录了,尽管更冗长,在 POSIX 规范中awk

相关内容