当前位置:网站首页>awk从入门到入土(8)数组
awk从入门到入土(8)数组
2022-07-04 08:38:00 【奇妙之二进制】
数组
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 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 实现数组索引的排序等等。我们会在后面的章节中介绍可以对数组进行操作的函数。
边栏推荐
- Convert datetime string to datetime - C in the original time zone
- What sparks can applet container technology collide with IOT
- What does range mean in PHP
- @Role of requestparam annotation
- DM8 uses different databases to archive and recover after multiple failures
- Add log file to slim frame - PHP
- std::is_ union,std::is_ class,std::integral_ constant
- Leetcode 23. Merge K ascending linked lists
- Const string inside function - C #
- The upper layer route cannot Ping the lower layer route
猜你喜欢

Basic operations of databases and tables ----- view data tables

How to improve your system architecture?

The basic syntax of mermaid in typera

ctfshow web255 web 256 web257

How does Xiaobai buy a suitable notebook

Guanghetong's high-performance 4g/5g wireless module solution comprehensively promotes an efficient and low-carbon smart grid

What if the wireless network connection of the laptop is unavailable

Azure ad domain service (II) configure azure file share disk sharing for machines in the domain service

SSRF vulnerability exploitation - attack redis

Codeforces Global Round 21(A-E)
随机推荐
What sparks can applet container technology collide with IOT
Private collection project practice sharing [Yugong series] February 2022 U3D full stack class 007 - production and setting skybox resources
Question 49: how to quickly determine the impact of IO latency on MySQL performance
Four essential material websites for we media people to help you easily create popular models
OpenFeign 服务接口调用
Use preg_ Match extracts the string into the array between: & | people PHP
如何通过antd的upload控件,将图片以文件流的形式发送给服务器
Display Chinese characters according to numbers
Put a lantern on the website during the Lantern Festival
How to set multiple selecteditems on a list box- c#
1. Qt入门
Laravel page load problem connection reset - PHP
WordPress get_ Users() returns all users with comparison queries - PHP
Unity-Text上标平方表示形式+text判断文本是否为空
[CV] Wu Enda machine learning course notes | Chapter 9
Chrome is set to pure black
Démarrage des microservices: passerelle
Cannot click button when method is running - C #
User login function: simple but difficult
How to choose solid state hard disk and mechanical hard disk in computer