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

Ama*_*asu 2 awk

我需要awk解析百分比数字(带有尾随`%\xc2\xb4)并检查它们是否超过一定百分比。

\n

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

\n
% echo "99%" | awk '{print ($1 + 0)}'\n99\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
echo "99e4" | awk '{print ($1 + 0)}'                 \n990000\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

Ste*_*itt 5

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

\n
\n

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

\n
\n

它也记录在 POSIX 规范中awk,尽管更详细。

\n