创新路
我们一直在努力

awk的简单使用

awk是一个优良的文本处理工具,能过滤文本内容,和grep类似,可以进行列操作,还可以使用正则,正则需用/正则/

awk文本处理工具的基本用法

  用法一:前置命令 | awk [选项] ‘[条件]{指令}’   

  用法二:awk [选项] ‘[条件]{指令}’ 文件                  //条件多为/正则/

  选项: -F:指定使用特定的分隔符,如未指定,则使用默认的分隔符空格和TAB

                   例:awk '{print $1}' a  //使用默认分隔符后输出第一列

                         awk -F, '{print $1}' a  //使用,为分隔符,输出第一列

image.png

                         awk -F[/,] '{print $1,$2}' a  //同时使用/和,作为分隔符,输出第一和第二列

image.png

  内置变量:$1,$2….  //第一列,第二列

                  NR  //当前行的行号

                  NF  //当前行有多少列

                  例:awk '{print NR,NF}' a

image.png

  常量:常量需要用""给引起来

            例:awk '{print "这是第"NR"行","一共有"NF"列"}' a

image.png

  awk高级用法

    awk 'BEGIN{} {} END{}' 文件

      BEGIN{}:在读文件之前就先执行这部分

      {}:读取文件时执行这部分条件

      END{}:文件读取完成后再执行这部分

      例:awk 'BEGIN{count=0} /bash$/{count++} END{print count}' /etc/passwd       //定义count=0,以bash结尾的行count则加1,最后输出count的值

image.png

      例:在/root/passwd文件中打印出如下形式

             用户名    家目录    PID

              xxx         xxx        xxx

              xxx         xxx        xxx

              xxx         xxx        xxx

             总用户量:xxx

             awk -F: 'BEGIN{count=0;print "用户名","家目录","PID"} {count++;print $1,$6,$3} END{print "总用户量:",count}' /root/passwd | column -t        //column -t 是排版

image.png

    ~匹配用法

        例:awk -F: '$1~/root/' /etc/passwd    //匹配第一列中是root的输出行

               awk -F: '$7!~/nologin/' /etc/passwd      //匹配第7列不是nologin的行输出

    数值字符串设置条件

        ==  !=  >=  <=  > <  &&  ||

            例:awk -F: '$1=="root"' /etc/passwd     //精准匹配第一列是root的行

            例:awk -F: '$3>1000||$3<10{print $1}' /etc/passwd    //输出PID大于1000或者小于10的用户名

    数组用法

        例:awk 'BEGIN{a[0]=11;a[1]=22;for (i in a) {print i,a[i]}}'     //定义数组a,遍历数组,输出

 image.png

未经允许不得转载:天府数据港官方信息博客 » awk的简单使用

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机