我需要awk
解析百分比数字(带有尾随`%\xc2\xb4)并检查它们是否超过一定百分比。
正常解析只是忽略任何尾随字符,例如:
\n% echo "99%" | awk '{print ($1 + 0)}'\n99\n
Run Code Online (Sandbox Code Playgroud)\n当然,由e
和 数字组成的字符串除外:
echo "99e4" | awk '{print ($1 + 0)}' \n990000\n
Run Code Online (Sandbox Code Playgroud)\n这种行为是否稳定并且对于不同的 s 是相同的awk
,还是建议显式删除%
?
是的,这是跨 AWK 实现的稳定行为。GNU AWK 手册中记录如下:
\n\n\n通过将字符串的任何数字前缀解释为数字,将字符串转换为数字:
\n"2.5"
转换为 2.5、"1e3"
转换为 1,000、"25fix"
数值为 25。 可以\xe2\x80\x99t 解释为有效数字的字符串转换为零。
它也记录在 POSIX 规范中awk
,尽管更详细。