awk的奇怪行为

awk的奇怪行为,awk,Awk,我遇到了awk的以下行为,这让我非常困惑: echo "" | awk '{print 15}' 输出 15 13 但是: 输出 15 13 用013、0013、0105和0130替换015分别得到11、11、69和88。浮点数按预期工作,带或不带前导零 我观察到GNU Awk版本3.1.7、4.0.2和4.1.3的这种行为 有人能理解这一点吗?预期的015被视为八进制值 echo "" | awk '{print 015}' ##Octal 13 echo "" | awk '{pr

我遇到了awk的以下行为,这让我非常困惑:

echo "" | awk '{print 15}'
输出

15
13
但是:

输出

15
13
用013、0013、0105和0130替换015分别得到11、11、69和88。浮点数按预期工作,带或不带前导零

我观察到GNU Awk版本3.1.7、4.0.2和4.1.3的这种行为


有人能理解这一点吗?

预期的
015
被视为八进制值

echo "" | awk '{print 015}' ##Octal
13
echo "" | awk '{print 15}'  ##Decimal
15
echo "" | awk '{print 0x15}' ##Hex
21

编辑:在此处添加jas在评论中发布的漂亮链接

预计
015
将被视为八进制值

echo "" | awk '{print 015}' ##Octal
13
echo "" | awk '{print 15}'  ##Decimal
15
echo "" | awk '{print 0x15}' ##Hex
21

编辑:在此处添加jas在评论中发布的漂亮链接

只是一个提示:如果您想在不需要任何输入的情况下执行一些awk代码,请使用BEGIN块

awk 'BEGIN {
    print 015
    print 15
    print 0x15
}'

提示:如果您想在不需要任何输入的情况下执行一些awk代码,请使用BEGIN块

awk 'BEGIN {
    print 015
    print 15
    print 0x15
}'

基数8中的15==基数10中的13。参见这里:好,这就解释了it@jas,谢谢你分享,我一直在找,最后我自己写了,谢谢。15以8为基数==13以10为基数。看这里:好的,这就解释了it@jas,谢谢分享,我一直在找,最后还是自己写的,谢谢。