awk 字符串类型数字类型的相互转换和strtonum函数
2017-06-08 11:24
766 查看
一、strtonum 函数:
1、八进制、十六进制和十进制相互转换:
1)使用strtonum函数:
十六进制转十进制:
# echo '12af' | awk '{print strtonum("0x"$0)}'
4783
或者:
# echo '0x12af' | awk '{print strtonum($0)}'
4783
八进制转十进制:
# echo '011257' | awk '{print strtonum($0)}'
4783
strtonum()函数,参数中把0开头的当作八进制,把0x或0X开头的当作16进制,返回它们的十进制数值。
2)使用shell:
十六进制转十进制:
# echo $((16#12af))
4783
同理,八进制和二进制:
# echo $((8#011257))
4783
3)对于十进制转十六、八进制,可以使用awk的printf函数来搞定:
十进制转十六进制(%0x)
# echo "4783"|awk '{printf("%0x\n",$0)}'
12af
十进制转八进制:(%o)
# echo "4783"|awk '{printf("%o\n",$0)}'
11257
2、截取一个字符串中以数字开头的数字:(如果有些字段里包含空格啊,其他一些非数字字符等,可以用它来去掉)
$ cat file
555 a ;
123c
c123
$ awk '{print "\""strtonum($0)"\""}' file
"555"
"123"
"0"注:对于非数字开头,返回0。
3、字符串类型转数字:
见下面。
二、awk字符串类型和数字类型相互转换:
在awk里不论字符串还是数字都被视为字符串;请理解“awk 变量“字符串化”是因为所有 awk 变量在内部都是按字符串形式存储的。同时,awk 变量是“简单的”,因为可以对它执行数学操作,且只要变量包含有效数字字符串,awk 会自动处理字符串到数字的转换步骤” 特别地,字符在参与运算时被视为0
1、字符串转数字:
1)使用strtonum()函数:
# awk 'BEGIN{a="100";b="10test10";print (strtonum(a)+strtonum(b));}'
110
2)使用”+”连接自动转换:
# awk 'BEGIN{a="100";b="10test10";print (a+b+0);}'
110
只需要将变量通过”+”连接运算。自动强制将字符串转为整型。非数字变成0,发现第一个非数字字符,后面自动忽略。
2、数字转字符串:
# awk 'BEGIN{a=100;b=100;c=(a""b);print c}'
100100
只需要将变量与””符号连接起来运算即可。
1、八进制、十六进制和十进制相互转换:
1)使用strtonum函数:
十六进制转十进制:
# echo '12af' | awk '{print strtonum("0x"$0)}'
4783
或者:
# echo '0x12af' | awk '{print strtonum($0)}'
4783
八进制转十进制:
# echo '011257' | awk '{print strtonum($0)}'
4783
strtonum()函数,参数中把0开头的当作八进制,把0x或0X开头的当作16进制,返回它们的十进制数值。
2)使用shell:
十六进制转十进制:
# echo $((16#12af))
4783
同理,八进制和二进制:
# echo $((8#011257))
4783
# echo $((2#11)) 3
3)对于十进制转十六、八进制,可以使用awk的printf函数来搞定:
十进制转十六进制(%0x)
# echo "4783"|awk '{printf("%0x\n",$0)}'
12af
十进制转八进制:(%o)
# echo "4783"|awk '{printf("%o\n",$0)}'
11257
2、截取一个字符串中以数字开头的数字:(如果有些字段里包含空格啊,其他一些非数字字符等,可以用它来去掉)
$ cat file
555 a ;
123c
c123
$ awk '{print "\""strtonum($0)"\""}' file
"555"
"123"
"0"注:对于非数字开头,返回0。
3、字符串类型转数字:
见下面。
二、awk字符串类型和数字类型相互转换:
在awk里不论字符串还是数字都被视为字符串;请理解“awk 变量“字符串化”是因为所有 awk 变量在内部都是按字符串形式存储的。同时,awk 变量是“简单的”,因为可以对它执行数学操作,且只要变量包含有效数字字符串,awk 会自动处理字符串到数字的转换步骤” 特别地,字符在参与运算时被视为0
1、字符串转数字:
1)使用strtonum()函数:
# awk 'BEGIN{a="100";b="10test10";print (strtonum(a)+strtonum(b));}'
110
# cat test | awk '{if(strtonum($0)>1){print "dayu"} else {print "xiaoyu"}}'
2)使用”+”连接自动转换:
# awk 'BEGIN{a="100";b="10test10";print (a+b+0);}'
110
只需要将变量通过”+”连接运算。自动强制将字符串转为整型。非数字变成0,发现第一个非数字字符,后面自动忽略。
# cat test | awk '{if($0+0>1){print "dayu"} else {print "xiaoyu"}}'
2、数字转字符串:
# awk 'BEGIN{a=100;b=100;c=(a""b);print c}'
100100
只需要将变量与””符号连接起来运算即可。
相关文章推荐
- python 数字类型和字符串类型的相互转换实例
- python 数字类型和字符串类型的相互转换
- C#数字进制间与字符串类型相互转换
- C#数字进制间与字符串类型相互转换
- 数字类型和字符串类型的相互转换
- 简单的stringstream实例--实现字符串与数字之间相互转换
- 日期类型与字符串类型相互转换工具类
- C# 控制台输入输出非字符串类型数据的方法[进制数字转换为八进制数字]
- [Tip: _itow]数值和字符串相互转换(C++ 数据类型转换技巧)
- 字符串:怎样将数字类型转换为字符串
- 字符串:怎样将数字类型转换为字符串
- java中数字与字符串类型间的转换
- 日期与字符串类型间转换,百分比与数字类型间转换
- js 字符串与数字的相互转换及处理
- JS 时间戳 时间字符串 时间类型相互转换
- mysql将字符串类型转换成数字类型
- 判断C#中的字符串是否是数字,如果是转换成int类型
- C++中字符串与数字类型之间的转换
- 数字类型与string类型的相互转换(网上转载)
- 字符串与数字的相互转换