Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2461494
  • 博文数量: 273
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5495
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好, 不为金钱, 而纯粹是为了在这个领域享受追寻真理的快乐.

文章分类

全部博文(273)

文章存档

2015年(3)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-09-21 20:57:25

十六进制转十进制:
  1. echo '12af' | awk '{print strtonum("0x"$0)}'
  2. 4783

十进制转十六进制:
  1. echo "4783"|awk '{printf("%x\n",$0)}'
  2. 12af

八进制转十进制:
  1. echo '011257' | awk '{print strtonum($0)}'
  2. 4783

十进制转八进制:
  1. echo "4783"|awk '{printf("%o\n",$0)}'
  2. 11257

strtonum(str) :  Examines  str,  and  returns  its numeric value.  If str begins with a leading 0, strtonum() assumes that str is an octal number.  If str begins with a leading 0x or 0X, strtonum() assumes that str is a hexadecimal number.

strtonum()函数把0开头的当作八进制,把0x或0X开头的当作16进制返回它们的数值.它还有一个功能,能截取一个字段里数字开头的并包含有其他非数字字符的字符串中的数字,有点饶口吧,举个栗子:
  1. $ cat file
  2. 555 a ;
  3. 123c
  4. c123
  5. $ awk '{print "\""strtonum($0)"\""}' file
  6. "555"
  7. "123"
  8. "0"
如果有些字段里包含空格啊,其他一些非数字字符等,可以用它来去掉。
阅读(14241) | 评论(2) | 转发(2) |
给主人留下些什么吧!~~

dzminglong2014-12-05 00:24:10

echo '1223 cc 123' | awk '{print strtonum($0)}'  
1223
能截取字符串中以数字开头,并包含有非数字字符中的非数字字符前的数字部分,我觉得最后一点儿这么说比较准确些

xrzs19862012-02-24 02:48:26

good~  赞一个~