linux——awk(7):awk数组详解

linux——awk(7):awk数组详解awk中数组的使用。我们在其他语言中经常会使用到数组,awk中也可以使用。示例如下:与其他不同的是,awk中的数组元素值可以设置为”空字符串“,当设定某一个元素为”空字符串“时,打印出的值就是为”空“(注:”空格“不为”空“)。鉴于awk中,元素的值可以为”空“,我们就不能根据元素的值是否为”空“去判断元素是否存在了。另外即使在模式中没有提前设定某个字符的存在,如果print中进行了引用,…

大家好,又见面了,我是你们的朋友全栈君。

awk中数组的使用。我们在其他语言中经常会使用到数组,awk中也可以使用。示例如下:

linux——awk(7):awk数组详解

与其他不同的是,awk中的数组元素值可以设置为”空字符串“,当设定某一个元素为”空字符串“时,打印出的值就是为”空“(注:”空格“不为”空“)。鉴于awk中,元素的值可以为”空“,我们就不能根据元素的值是否为”空“去判断元素是否存在了。另外即使在模式中没有提前设定某个字符的存在,如果print中进行了引用,那将会自动创建该元素,默认值为空。

linux——awk(7):awk数组详解

那在awk中如何判断元素的存在呢:

linux——awk(7):awk数组详解

可以使用if(下标 in 数组名),从而判断数组元素是否存在,如上所示,虽然test[1]=””,但是该数组元素依旧存在,只是为”空“。test[3]不存在所以没有print出”AAAAAA“,如果直接print test[3]则会默认将该元素设定为”空“。

linux——awk(7):awk数组详解

同时可以用”!“给上述判断取反。

在awk中,数组的下标不仅可以为”数字“,还可以为”任意字符“。

linux——awk(7):awk数组详解

使用delete可以删除awk中的数组或者删除整个数组,例子如下:

linux——awk(7):awk数组详解

可以用循环输出数组中的所有元素:

#for循环语法格式1
for(初始化,布尔表达式;更新){
//代码语句
}

#for循环语法格式2
for(变量 in 数组){
//代码语句
}

注意,两种都能遍历输出数组中的元素,不过第一种for循环语法只能够输出以数字作为下标的数组,示例如下:

linux——awk(7):awk数组详解

数组运算:

linux——awk(7):awk数组详解

在awk中可以进行数值运算,如果a有数值,则可以直接使用;如果a初始值默认设定为字符串或者空值,则计算时默认为0.之前我们如果引用了一个不存在的元素时,在print时候发现这个元素被赋值为空字符串。由上面可知,如果初始值为空值时,对元素进行自加运算,元素的值就变成了1.

综上,我们对一个不存在的元素进行自加运算后,这个元素的值就变成了自加运算的次数。例子如下:

统计某些文本出现的次数。

linux——awk(7):awk数组详解

参考:http://www.zsythink.net/archives/2093

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161650.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python字符串的使用方法_python输入字符串str

    python字符串的使用方法_python输入字符串strpython字符串常用方法find(sub[,start[,end]])在索引start和end之间查找字符串sub​找到,则返回最左端的索引值,未找到,则返回-1​start和end都可

    2022年7月28日
    1
  • 模电基础部分总结(自用)

    模电基础部分总结(自用)模电基础部分总结(自用)第一章1.1半导体基础知识1.什么是模拟信号,数字信号?答:模拟信号在时间和数值上均具有连续性,例如正弦波信号。模拟信号在时间和数值上均具有连散性,它们的数值是最小量值的整倍数,并以此倍数作为数字信号的数值。2模/数转换,数/模转换?答:模数:对模拟信号进行数字化处理时,需首先将其转换成计算机识别的数字信号。数模:计算机输出的数字信号常需转换为能够驱动负载的…

    2022年6月20日
    24
  • ansys隐式显式算法区别_算力与算法的区别举例说明

    ansys隐式显式算法区别_算力与算法的区别举例说明2.4PIMPLE算法2.4.1速度的非线性耦合在2.1节中,我们曾对流动系统的压力速度耦合问题进行过讨论,实际上,在流动系统中除了压力和速度的耦合关系,我们还存在着另一种重要的耦合关系,速度的非线性耦合关系。当我们对速度进行求解时(例如求解动量预测方程),速度是未知量,因此对流项∇⋅(U⃗U⃗)\nabla\cdot(\vecU\vecU)∇⋅(UU)是一个未知量乘以未知量的结果,这样会使得原来呈线性的方程变为非线性方程(即未知数的最高次数从1变为2)。直接求解非线性系统的矩阵方程需要调用非线性

    2025年7月7日
    0
  • android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]

    android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)publicabstractclassAnimationextendsObjectimplementsCloneablejava.lang.Object↳Android.view.animation.AnimationKnownDirectSubclassesAlphaAn…

    2022年8月31日
    0
  • vbs表白代码+整人代码,抖音vbscript表白代码

    vbs表白代码+整人代码,抖音vbscript表白代码步骤一:在电脑上新建一个txt文件步骤二:将以下代码复制过去(中文可以改)consttitle=“爱情测试”constyourname=“嫦娥”constquestion=“你最喜欢的人是谁?请在下面的方框中输入他(她)的名字。”constinfo=“你在说谎!不要逃避,实话实说。”constscend=“你说出了你的心扉,那就向他(她)表白吧。”di…

    2022年6月8日
    44
  • 屏幕尺寸、分辨率、像素密度及其三者之间的关系[通俗易懂]

    屏幕尺寸、分辨率、像素密度及其三者之间的关系[通俗易懂]屏幕尺寸屏幕对角线的长度单位英寸,1英寸等于2.54厘米分辨率横纵向方向像素的大小纵向像素*横向像素,如1920px*1080px单位像素(px)像素密度指每英寸屏幕所拥有的像素的数量单位dpi三者关系像素密度=Sqrt(横向像素*横向像素+纵向像素*纵向像素)/屏幕尺寸注意:像素大小并不是固定的,不同的设备像素的大小可能不相同

    2022年5月30日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号