Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116835
  • 博文数量: 26
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 122
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-11 10:02
个人简介

分享是一种快乐!

文章分类

全部博文(26)

文章存档

2014年(11)

2013年(15)

我的朋友

分类: LINUX

2014-02-17 11:10:41

十六进制转十进制:
  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"
如果有些字段里包含空格啊,其他一些非数字字符等,可以用它来去掉。
阅读(2116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~