awk中的数组

awk中的数组跟php中的很像,使用前都不需要声明,都可以用字符串做下标。

我们创建一个reg.dat文件来记录用户选修的课程:

  1. Mary O.S. Arch. Discrete Steve D.S. Algorithm Arch.
  2. Wang Discrete Graphics O.S. Lisa Graphics A.I.
  3. Lily Discrete Algorithm

现在要统计各课程被选的次数,亲,怎么办?

之前的程序都是用命令行完成的,从这一篇开始,我们学习将程序写在文件中来调用。

调用的方式是:

  1. awk -f awk程序文件 数据文件

下面创建一个course.awk文件,在里面编写如下的程序:

  1. {for(i=2;i<=NF;i++) Number[$i]++}
  2. END {for(course in Number) printf("%10s %d\n", course, Number[course])}

然后在命令行中调用:

  1. awk -f course.awk reg.dat

输出结果:

  1. Discrete 3
  2. D.S. 1
  3. O.S. 2
  4. Steve 1
  5. A.I. 1
  6. Lisa 1
  7. Graphics 2
  8. Arch. 2
  9. Algorithm 2

解释一下course.awk中的程序:

第一行是一个for循环,NF是一行的字段数,Number是一个数组,$i从第2列开始,直到一行最后一列,其实就是循环了一行的所有的课程,我们将课程名作为数组的下标,一旦有重复的课程,就会将Number[$i]加1。

第二行中的END表示的是在文件处理结束后进行的处理。这一行也有一个for循环,它是用于将Number数组格式化输出,for(course in Number)会逐个读取Number中的元素,读取的下标即course,值为Number[course]。printf完成下标与值的格式化输出。

其实在之前的awk学习笔记(6)中介结不排序对数据去重的技巧时已经用到过数组了,只是没有系统的学习。

转载于:https://blog.51cto.com/ustb80/1034692

awk学习笔记(10) - 数组相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  3. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  4. JavaWeb黑马旅游网-学习笔记10【项目代码】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  5. Python学习笔记——Numpy数组的移动滑窗,使用as_strided实现

    Python学习笔记--Numpy数组的移动滑窗,使用as_strided实现 `Numpy`中移动滑窗的实现 为何需要移动滑窗 `Numpy`中的移动滑窗 移动滑窗的`as_strided`实现方法 ...

  6. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  7. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  8. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

  9. Linux学习笔记10

    Linux学习笔记10 Linux学习笔记10 正则表达式 源码包约定目录 Shell脚本约定目录 Shell脚本的创建与执行 date命令 同步时间 Shell脚本预设变量 与用户交互 数学计算 S ...

最新文章

  1. Python Qt GUI设计:QLabel标签类(基础篇—11)
  2. C# Idioms: Enum还是Enum Class(枚举类)
  3. Anaconda 安装 TensorFlow ImportError:DLL加载失败,错误代码为-1073741795
  4. wxWidgets:窗口 ID
  5. 历害了!教你自己搭建一个私人网盘..
  6. Vue2的核心原理剖析
  7. Vue 是如何用 Rollup 打包的?
  8. spark算子_十、Spark之详解Action类算子
  9. 可以访问本地mysql服务器的命令是_在用户访问本地MySQL服务器时,访问命令可以省略“–h localhost”。...
  10. php网站 只显示sinsiu_sinsiu_cms_1_0_10
  11. 递归查找特定路径的所有特定文件
  12. 小白知识摘录__环境变量
  13. 拓端tecdat|R语言对NASA元数据进行文本挖掘的主题建模分析
  14. IIS7.5 安装设置-Sql Sever2008安装设置-移动端设置等必读
  15. 基于java的网络电子通讯录的设计_网络电子通讯录管理系统
  16. IntelliJ IDEA 如何设置黑色主题以及Java字体的大小与颜色
  17. 华为模拟器路由器交换机远程控制
  18. 当A题成为一种习惯--POJ AC100题纪念贴
  19. word论文排版和写作02:插入算法的伪代码
  20. 【项目管理】交付绩效域管理

热门文章

  1. VTK:可视化之CurvatureBandsWithGlyphs
  2. VTK:网格之CapClip
  3. VTK:Math之EigenSymmetric
  4. C++tim Sort提姆排序的实现算法(附完整源码)
  5. C++类特殊成员函数
  6. QT的QMapIterator类的使用
  7. QT的QDial类的使用
  8. QT的QAssociativeIterable类的使用
  9. python colorlist_Python list的常用操作
  10. mysql5.7.32 win7_拯救10年前老爷机:C盘不到3G的Win7官方精简版amp;俄大神精简版分享...