- AWK 教程
- AWK - 首页
- AWK - 概述
- AWK - 环境
- AWK - 工作流程
- AWK - 基本语法
- AWK - 基本示例
- AWK - 内置变量
- AWK - 运算符
- AWK - 正则表达式
- AWK - 数组
- AWK - 控制流
- AWK - 循环
- AWK - 内置函数
- AWK - 用户自定义函数
- AWK - 输出重定向
- AWK - 美化输出
- AWK 有用资源
- AWK - 快速指南
- AWK - 有用资源
- AWK - 讨论
AWK - 数组
AWK 具有关联数组,它的一大优点是——索引不需要是连续的数字集;您可以使用字符串或数字作为数组索引。此外,无需预先声明数组的大小——数组可以在运行时扩展/收缩。
其语法如下:
语法
array_name[index] = value
其中array_name是数组的名称,index是数组索引,value是分配给数组元素的任何值。
创建数组
为了更深入地了解数组,让我们创建并访问数组的元素。
示例
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange"
print fruits["orange"] "\n" fruits["mango"]
}'
执行此代码后,您将得到以下结果:
输出
orange yellow
在上面的例子中,我们将数组声明为fruits,其索引是水果名称,值是水果的颜色。要访问数组元素,我们使用array_name[index]格式。
删除数组元素
对于插入,我们使用了赋值运算符。类似地,我们可以使用delete语句从数组中删除元素。delete语句的语法如下:
语法
delete array_name[index]
以下示例删除元素orange。因此,该命令不显示任何输出。
示例
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
多维数组
AWK 只支持一维数组。但是您可以轻松地使用一维数组模拟多维数组。
例如,下面是一个 3x3 的二维数组:
100 200 300 400 500 600 700 800 900
在上面的示例中,array[0][0] 存储 100,array[0][1] 存储 200,依此类推。要在 array 位置 [0][0] 存储 100,我们可以使用以下语法:
语法
array["0,0"] = 100
尽管我们使用0,0作为索引,但这并不是两个索引。实际上,它只是一个带有字符串0,0的索引。
以下示例模拟了一个二维数组:
示例
[jerry]$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# print array elements
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
执行此代码后,您将得到以下结果:
输出
array[0,0] = 100 array[0,1] = 200 array[0,2] = 300 array[1,0] = 400 array[1,1] = 500 array[1,2] = 600
您还可以对数组执行各种操作,例如对其元素/索引进行排序。为此,您可以使用asort和asorti函数。
广告