awk使用笔记:多维数组(带例子)
2017-09-08 13:28
274 查看
http://sparkandshine.net/awk-use-notes-multidimensional-arrays-with-examples/转自:
awk通过将下标整体看成一个字符串来支持多维数组。本文结合例子介绍awk多维数组的赋值及遍历。
目录 [hide]
1.
多维数组
2.
数组赋值
3.
遍历数组
3.1
分割字符串split
4.
其他
awk通过将下标整体看成一个字符串来支持多维数组,实际上是一维数组,如
separator),可见,awk可以支持任意维的数组。
awk变量无须定义,可直接赋值,举例如下:
# name ID score
array["Jelline", "201021060111"] = 100
array["SparkandShine", "201021060118"] = 150
由上面分析可知,awk多维数组本质上是一维数组,比较特殊的是多个下标用特殊字符
# 打印数组
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]
}
}
函数
split(string, array [, fieldsep [, seps ] ])
将string按
split("cul-de-sac", a, "-", seps)
a[1] = "cul"
a[2] = "de"
a[3] = "sac"
seps[1] = "-"
seps[2] = "-"
函数返回值为3
可以通过以下方法判断一个数组是否存在指定的下标,用于
(subscript1, subscript2, …) in array
参考资料:
[1]官方文档《8.5
Multidimensional Arrays》
[2]官方文档《String-Manipulation
Functions》
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》
相关文章推荐
- awk使用笔记:多维数组(带例子)
- C++笔记之使用new动态分配多维数组
- 学习笔记---多维数组及多级指针的使用
- Javascript之多维数组使用事例
- LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
- SqlParameter数组 使用笔记
- LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
- 使用委托数组的一个例子简介一下委托
- C#语言多维数组的声明与使用
- Java编程那些事儿50—多维数组使用示例2
- Java编程那些事儿50—多维数组使用示例2
- 数组排序Arrays.sort方法的使用例子
- Java中使用数组的例子
- awk数组处理两个文件的例子
- Vb6里面数组的使用的小例子
- LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
- LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
- LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
- Java编程那些事儿49—多维数组使用示例1
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释