三剑客之awk

简介

  awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

  awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

  awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程  序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

 

语法格式

  awk [参数] [处理规则] [操作对象]

 

参数

    -F :指定文本的分隔符(默认以空格为分隔符)

 

脚本

    关于awk脚本,我们需要注意两个关键字,一个是BEGIN,一个是END

      • BEGIN{这里面放执行前的语句}
      • /处理规则/
      • {这里放处理每一行要执行的语句}    
      • END{这里放处理完后要执行的语句}        

    脚本中的顺序一般都是按照上方的顺序执行的,每次执行必须要有其中的一个语句,也可以拥有多个语句,{}是一个循环

 

常见内置变量

    $    : 取出变量

    $0  : 当前行的记录

    $n  : 用-F分割符分割后的第n个字段

    NR :记录已经读出的行号(不是内部的行号,是外部自己定义的行号)

    NF :记录当前行的字段数,就是有多少列

    FS  : 文本内容分隔符,和参数-F的作用一样,优先级比-F要高(默认是空格)

    OFS:输出分隔符

定位表达式

    比较表达式

      >  :大于

      <   :  小于

      >= : 大于等于

      <= : 小于等于

      ~    : 使用正则匹配

      !~ :不使用正则匹配

    条件表达式

      == :等于

      != : 不等于

      >  :大于

      <   :  小于

      >= : 大于等于

      <= : 小于等于

    逻辑表达式

      &&  : 并且

      ||     :或者

      !   : 非

    算数表达式

      + :加

      - :减

      * :乘

      / :除下·

      % :取余

常用的内置函数

  print :打印输出

  printf :格式化打印输出

    printf的修饰符

      -    :左对齐

      +   :右对齐

      %s:匹配字符串

      %d :匹配数字

    案例 

     将etc目录下的passwd文件里的第一列于最后一列以左对齐的方式用‘|’隔开且每个区域起码有15个字节格式化输出

 

 

 

 

条件语句与循环    

    if语句格式

      单条件语句: if (条件){满足条件执行操作}

      双条件语句 : if(条件1){满足条件1执行操作}else{不满足条件1执行操作}

      多条件语句: if(条件1){满足条件1执行操作}else if(条件2){满足条件2执行操作}else{不满足条件1与条件2后执行操作}

    案例 比较两个数字大小

 

 

 

     for循环

       for 语句首先执行初始化动作( initialisation ),然后再检查条件判断。如果条件为真,则执行,然后执行递增( increment )或者递减( decrement )操作。只要条件为 true 循环就会一直执行。每次循环结束都会进条件检查,若条件为 false 则结束循环。

    for循环语句格式

        for(i="初始值;条件判断;游标"){}

    案例循环打印10到1

 

     while循环

      While 循环首先检查条件 是否为 true ,若条件为 true 则执行。此过程一直重复直到条件为 flase 才停止。

    while循环语法格式

        while(条件判断){}

    案例循环打印10到1

 

    PS:if ,for,while都必须在循环里面

 

    

posted @ 2021-12-22 21:09  椰子皮0oo0  阅读(66)  评论(0)    收藏  举报
1