奇怪的 awk 语法:带有两个点的数字?

奇怪的 awk 语法:带有两个点的数字?

我无意中

gawk 'BEGIN { print 1.2.3+4; }'

并收到

1.24.3

我以为数字中有两个点,所以会出现语法错误。
这是怎么回事?
这是 GNU awk 的一个错误还是一个功能?

这些版本的结果相同:
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)来自 Ubuntu 16.04 和
GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.2, GNU MP 4.3.2)来自 cygwin。

答案1

表达方式

1.2.3+4

gawk 解析为两个数字表达式: 1.2.3+4

(第二个点是不允许作为第一个表达式的一部分,因此解析器将其视为另一个表达式的开始。

.3第二个表达式是和的总和4,gawk 正确计算得出4.3

然后它打印1.24.3(不带分隔符):

1.24.3

相关内容