这个是我自己写的 全部关于 awk学习的目录导航 ,感兴趣的可以看看。

 


 
       关于 数组,有的人很熟悉,然而有的人却很陌生,什么叫数组以及数组相关的概念?
      
      

什么是数组?

      

数组: 简单来说就是 多个具有相同类型 的所有数据的一个集合!

数组下标: 用来 区分或指定 数组中每一个数的位置!

语法:<数据类型> <数组名>[<表达式>]

假如你还是不懂,举个简单的例子:

       数组 你可以把它当成一个篮球队!同一个篮球队的就可以当成一个数组!然后该篮球队的队友如何区分?当然是通过队服上的号码了!(相当于数组下标)这样是不是特别通俗易懂!
      
      


数组中的四种基本数据结构:

      

1、集合:

       数据元素间,除了 同属于一个集合 外,并没有其他关系。相当于一个班里的同学,除了都属于一个班,其他的都是很独立的!
      

2、线性结构(一对一):

       班级里的同学本来没有先后顺序,但是当我们给他安排了学号之后,这样他们就按着学号来排名了!1号、2号…n号。基本上都使用此结构!
      

3、树形结构(一对多):

       这个就是相当于一个公司,最上面是老板啊、老板下面是各部门经理啊、经理下面是员工啊…等等
      

4、图状结构(多对多):

      


      

为什么要用数组?

      
       在编程中,如果我们有 10个、100个 相同数据类型的数据,那我们难道需要写100个变量吗?难道需要记住100个变量名吗???这样也太废头了吧!这个时候就体现出 数组的作用了!!!
      


      

一维数组:

      
       所谓 一维数组,就是 只有一个下标的数组! 它在计算机的 内存 中是 连续存储 的!
      
    

一维数组的语法格式:

    
<存储类型>      <数据类型>       <数组名>[<表达式>]
      
数据类型: 整数型(int、long、short)
                   字符型(char)
                   浮点型(float、double)

下标: 数组元素在内存中是 连续存放 的,每个元素都有一个 序号,称为 下标数组中的下标是从 0 开始的连续整数,所以最大取值为 数组元素个数 减 1!!!

[ ]: 是下标运算符,具有 最高的运算优先级
      
      

举个栗子:

char    a[10]
      
说明了 一个含有10个元素的 数组名为:a
      
具体的数组元素为:
a[0]、a[1]… …a[9]
      
为什么是到9呢?因为咱们说过 他是从0开始计数的!这些元素的类型都为 char,在内存中他们是连续存放的。
      

这里我就简单了解一下数组,具体的我也不清楚,二维数组…多维数组等等,慢慢学习吧!

    
    
    
       那么 ,回到我们的正题,在 awk 中可以使用数组吗?答案是当然可以,不然我写这篇文章做什么?

      

awk 中声明数组:

       在其他语言中,你可能习惯的提前声明数组,但是在 awk 中不需要提前声明,直接为 数组中的元素赋值即可!而且 awk 中使用 “数字下标” 的时候,默认是以 1 开始,并不是以0 开始,这里是因为一个函数(split),这边会在函数中提到具体为什么,以及如何使用。
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
       但是对于我这样的一个初学者来说,这不就是一个简单的变量赋值吗?这还得一个一个的敲,并没有使用到数组的整体变量赋值啊。慢慢的带着我的疑问继续学习下去…
      

数组的元素设置:

       数组的元素设置为空 是允许的! 当你判断某个元素是否存在的时候,不应该看他数组元素是不是为空!

       当一个元素不存在于数组 的时候,如果我们直接引用此不存在的数组元素,那么awk会自动创建这个元素并默认为此元素赋值为“空字符串”

示例如下:
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
那么,如何判断一个数组中元素是否存在呢?
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
      

delete —— 删除数组元素:

通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
      

使用 for 循环:

        在上一篇文章中,提到了关于 for循环 的两个语法,这里来说一下关于数组的语法结构:

语法格式1:
      
for (初始化;布尔表达式;表达式){
语句1…
语句2…
}
      
      
语法格式2:
      
for (变量 in 数组名){
语句1…
语句2…
}

        注意: 两种 for 循环都可以遍历输出数组中的元素,但是 语法格式1 只能输出数字作为下标的数组!其中 变量循环的就是数组的下标!
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
        你也可以很清楚的看见,这里可以使用 语法格式1 是因为使用了  for 循环中 变量 “i” 与数组下标 都是数字 的原因,按照顺序输出了数组中的元素值  !那么要是数组的下标为 字符串 怎么办呢?那就该用 语法格式2 了!
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
        注意: 这个语法里的 “i” 表示的是数组的下标!并不是表示元素的值。要想输出元素的值,就使用 语法格式1
       
       

数字下标 与 字符串下标

通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
        从上图很明显的就可以看出使用 字符串作为下标 的时候,元素值输出的顺序元素值在数组中的顺序不一样 的!

        这是因为:awk 中的数组本质 上就是 关联数组,所以 默认打印出的元素就是无顺序的!但是,咱们知道,“数字下标”虽然看着是数字,但是最终也会被转换为“字符串”,那么它本质上也是关联数组,既然都属于关联数组,那么为什么使用数字下标的时候,输出的元素值都是相互对应的呢?

        这就是使用 数字下标 的优势,是因为 变量 “i”数字 的时候,由于 for 循环 的原因, “i” 是按照顺序递增的,所以当 “i” 的值下标的值 相同的时候,就可以根据下标的顺序输出对应元素的值!

        但是,即使使用 数字下标 ,如果你使用 第二种 for循环语法 ,也无法按照顺序输出:通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
        虽然我这边做了好几回实验,但是结果还是按照顺序输出,但是我看很多大佬的博客都是无顺序输出,这里我还有有点懵B,如果哪位大佬有借鉴可以在下面评论给我讲解一下吗?麻烦您了 非常感谢,我是纯小白,写这些也不是为了误人子弟,因为我都自己边做实验边写。,在这里附上其他大佬的图:
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!
通俗易懂理解什么是数组?awk 中使用数组 以及 for循环!!!


返回上一篇:awk 中的 for 、while 循环…

去往下一篇:数组的一些使用实例:统计ip地址…

相关文章: