awk使用笔记:多维数组(带例子)
来源:互联网 发布:chrome windows 2003 编辑:程序博客网 时间:2024/06/14 08:12
http://sparkandshine.net/awk-use-notes-multidimensional-arrays-with-examples/转自:
awk通过将下标整体看成一个字符串来支持多维数组。本文结合例子介绍awk多维数组的赋值及遍历。
目录 [hide]
- 1. 多维数组
- 2. 数组赋值
- 3. 遍历数组
- 3.1 分割字符串split
- 4. 其他
1. 多维数组
awk通过将下标整体看成一个字符串来支持多维数组,实际上是一维数组,如array[5,6]=7
,下标5和6连结成字符串5SUBSEP6
(数字5和6被视为字符串),SUBSEP是awk内建的一个变量,默认值是\034
(文件分隔符file separator),可见,awk可以支持任意维的数组。
2. 数组赋值
awk变量无须定义,可直接赋值,举例如下:
- # name ID score
- array["Jelline", "201021060111"] = 100
- array["SparkandShine", "201021060118"] = 150
3. 遍历数组
由上面分析可知,awk多维数组本质上是一维数组,比较特殊的是多个下标用特殊字符SUBSEP
连结成一个字符串,用split
可以将下标分隔开。遍历多维数组源代码如下:
- # 打印数组
- for (subscript in array) {
- split(subscript, a, SUBSEP);
- printf "%s\t%s\t%s\n", a[1], a[2], array[a[1], a[2]]
- }
- # 输出结果如下:
- SparkandShine 201021060118 150
- Jelline 201021060111 100
- # 对于数值,还可以这样遍历
- for (i=0; i<M; i++) {
- for (j=0; j<N; j++) {
- print array[i, j]
- }
- }
3.1 分割字符串split
函数split
用法如下:
- split(string, array [, fieldsep [, seps ] ])
将string按fieldsep
分割存储在array[1], array[2], ...
, 并将分隔符依次存储在seps[1], sep[2], ...
, 最后返回被分割的数目。举例如下:
- split("cul-de-sac", a, "-", seps)
- a[1] = "cul"
- a[2] = "de"
- a[3] = "sac"
- seps[1] = "-"
- seps[2] = "-"
- 函数返回值为3
4. 其他
可以通过以下方法判断一个数组是否存在指定的下标,用于if
语句,如下:
- (subscript1, subscript2, …) in array
参考资料:
[1]官方文档《8.5 Multidimensional Arrays》
[2]官方文档《String-Manipulation Functions》
阅读全文
0 0
- awk使用笔记:多维数组(带例子)
- awk使用笔记:多维数组(带例子)
- awk多维数组
- awk多维数组
- awk多维数组的遍历
- PHP使用Curl扩展Post多维数组的例子
- [学习笔记]多维数组
- 多维数组使用示例
- C#使用多维数组
- 多维数组定义使用
- awk 使用例子
- linux awk使用例子
- 学习笔记---多维数组及多级指针的使用
- 多维数组的例子-----> 杨辉三角
- (19)多维数组
- awk命令的使用(四)数组
- awk数组使用举例
- c++primer学习笔记(4.4)多维数组
- EasyDSS流媒体解决方案之Nodejs调用bat或sh脚本
- MYSQL-利用if函数把NULL或者空串儿排在后面
- 字符串匹配(后缀数组)
- 常用图标库
- 获取TextView中文本的宽度
- awk使用笔记:多维数组(带例子)
- mysql一些常用命令
- 机器学习概览
- Linux-centos下安装mysql
- android之在代码中控制视图
- HMM超详细讲解+代码
- 3dmax导出到unity3d下分割动画
- EasyDSS流媒体解决方案之接口文档自动生成
- Java作业-温度转换