我遇到了awk的以下行为,这让我很困惑:
echo "" | awk '{print 15}'
输出
15
但是:
echo "" | awk '{print 015}'
输出
13
用013、0013、0105和0130替换015分别得到11、11、69和88。浮点数可以按预期工作,带有或不带有前导零。
我已经观察到GNU Awk版本3.1.7、4.0.2和4.1.3的这种行为。
有人能理解吗?
答案 0 :(得分:2)
预期015
被认为是八进制值。
echo "" | awk '{print 015}' ##Octal
13
echo "" | awk '{print 15}' ##Decimal
15
echo "" | awk '{print 0x15}' ##Hex
21
编辑: 在这里https://www.gnu.org/software/gawk/manual/html_node/Nondecimal_002dnumbers.html
也添加了jas在评论中发布的漂亮链接答案 1 :(得分:1)
提示:如果您想执行一些awk代码而不需要任何输入,请使用BEGIN块
awk 'BEGIN {
print 015
print 15
print 0x15
}'
13
15
21