上一篇主要是awk的进本应用。本节是awk的进阶篇

ACTION:除去常用的print和printf还有以下几个

  • expression:表达式 如$1>3
  • control statements:控制语句,如if,while等
  • compound statements:组合语句
  • input statements :输入语句
  • output statements:输出语句

control statements

  if:

    if(condition) statements

    if(condition) statements else statements

    if用法示例

      

      uid>1000为普通用户,否则是root或者系统用户(centos7)

      

  while:

    while(condition) statements

    do statements while(condition)

    while语法示例

      

        while中嵌套if

      

  for:

    for(expr1;expr2;expr3) statement

     expre1,2,3分别为:初始表达式;终止条件;步长表达式

    for示例

      

  swith:

    swith(expression){case value1 or /regxp/:statement;case value2 or /regxp2/:statement……default:statement}

  next:结束对本行数据的处理直接进入下一行

    next示例

         

数组:array

  关联数组:array[index expression]

    index expression:

      可以使用任意字符串;

      字符串必须用双引号引起来。

      若引用一个数组中不存在的元素。awk会自动创建该元素,并且赋予其初始值——空字符或者数字0

    特殊用法:使用for循环数组以遍历其中元素——for (i in array) body

      array示例:

      

        统计命令中的tcp状态出现次数

      

        不是用BEGIN模式

      

练习题:

统计/etc/fstab文件中第三个字段(文件系统)出现的次数

  

统计/etc/fstab文件中所有单词分别出现的次数

    首先使用for(expre1,expre2,expre3)遍历每行中的每个元素,然后保存在数组ws中。然后使用for(i in ws)遍历数组中的每一个元素。最后输出元素及其出现次数。

  

函数:内置函数和自定义函数

  内置函数:

    数值处理

      rand():随机生成0~1之间的小数。

    字符串处理

      length([s]):返回指定字符串长度。

      sub(r,s,[t]):将字符串t中第一次被模式r匹配的字符串替换成s。

      gsub(r,s,[t]):将字符串t中所有被模式r匹配的字符串替换成s。

      split(s,a,[r]):以r为分隔符切割字符串s,并将结果保存在数组a中。

        

linux awk进阶篇的更多相关文章

  1. Linux命令进阶篇-文件查看与查找

    上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用.但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法! ...

  2. Linux命令进阶篇之一

    利用file命令查看那文件的类型 cd /etc 这里面的文件 命令:file 语法:file [-bLvz] 文件 解释:-b:显示结果,但是不显示文件名称 -L:直接显示符号链接所指向的文件的类型 ...

  3. linux shell 进阶篇、shell脚本编程-创建函数

    使用函数 #!/bin/bash # testing the script function myfun { echo "This is an example of a function&q ...

  4. linux 命令进阶篇之二

    一.预备知识 选取init的进程. cat :由第一行开始显示文件内容 tac:由最后一行开始显示,有没有发现和cat是反过来写的 more:一页一页的显示内容 less:与more相似,但是可以往前 ...

  5. Linux命令进阶篇之二

    实验内容: cat :由第一行开始显示文件内容       tac:由最后一行开始显示,有没有发现和cat是反过来写的       more:一页一页的显示内容       less:与more相似, ...

  6. idea 插件的使用 进阶篇

    CSDN 2016博客之星评选结果公布    [系列直播]零基础学习微信小程序!      "我的2016"主题征文活动   博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...

  7. PHP学习笔记 - 进阶篇(11)

    PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...

  8. Linux工具参考篇(网摘)

    Linux工具参考篇 原文出处:[Linux Tools Quick Tutorial] 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆文件 4. ps 进程查看器 5. ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置

    警惕 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作>主要是一个简单的介绍,针对redis ...

随机推荐

  1. python中基本的数据类型

    基本数据类型 数据:描述衡量数据的状态 类型:不同的事物需要不同的类型存储 整型  int 定义:年龄,手机号码等是整数的数字 字符串b转化为整型b = '12'print(type(b))b = i ...

  2. Dom对象更改文档结构.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. DRF之注册器、响应器、分页器

    一.url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入模块 1 from rest_f ...

  4. tracert/traceroute原理

    一.路由追踪程序traceroute/tracert Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序.二者的功 ...

  5. C语言打印年历

    摘要:使用C语言打印年历 最初看到这个是觉得比较有意思,记得读书时候只写过月历,年历要复杂一些,现在水平提高了,来重新写一下吧. 看了网上的一些代码,大都比较繁琐,本文采用全新的思路完成年历打印. 整 ...

  6. NOIP模拟13

    上来看了一遍题,发现T2似乎不可做...暴力只给20分怎么玩? T1感觉是要离线处理,但是看了一会发现不会,遂决定先打暴力.然后去把T2 20分拿了,回去看T1,手摸了一下样例,成功推出式子,5分钟码 ...

  7. 哟,来看看JS里面变量声明方式

    点点点点点点进来.点击此处领取双十一梦想大礼包. 终于被我忽悠进来了?老弟,不骚一下你不往里面点是吧,还想大礼包?想着吧. 今天要说的如题,JS里面变量声明方式.可能一提到这个话题大家能很快的打出来, ...

  8. P3067 [USACO12OPEN]平衡的奶牛群(折半暴搜)

    暴搜无疑.... 首先考虑纯暴搜...... 考虑每一个数: 选在左边集合 选在右边集合 不选 一共三种情况,用一个数组记录搜到的答案,所以暴搜是3^N的复杂度...直接死亡 于是讲折半暴搜.... ...

  9. 搜索框(SearchView)用法

    SearchView是Android原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. S ...

  10. Mybatis精讲(一)---环境配置及架构梳理

    目录 简介 ORM模型 Hibernate Ibatis 环境搭建 jar 配置 xml方式配置 代码方式配置 两种方式对比 Mybatis结构 源码解读xml环境加载 映射器解读 Ibatis # ...