awk读取输入数字时对进制的判断问题

本文通过实例解析了使用Awk进行文件名数值范围筛选时遇到的问题,并深入探讨了八进制与十进制数值处理的区别及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

考虑以下需求,用awk获取数值范围内的文件:

 

结果出错了?问题出在哪里呵

在不理解的情况下,有人试用了双引号:

 

结果正确。

 

考虑下$1的实际数值:

 

说明,这边$1读进去是十进制,读进0405,是十进制405,

而表达式里的0624,实际上是解释成八进制,值是404
所以才有这样的结果

 

如何让输入接入八进制和十六进制?
看看gnu awk的man有这句:
       --non-decimal-data
              Recognize octal and hexadecimal values in input data.  Use this option with great caution!

再看看加不加的区别

 

默认情况下是按十进制输入的

加个参数就可以支持八进制和十六进制了

不过还是要分析好数据,以防不慎

 

 

另外,加双引号也是可以的,不过

,只不过转化成按字符比较了,

不过用字符问题,是
"12"比"2"小

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值