awk:报告生成工具

 

 1、         

awk把文件中读取的每一行的每一个字段分别进行格式化,而后进行显示。
awk本身内置变量,条件判断,循环和数组。

awk的基本用法_awk

         如图所示,awk内置变量$1...而整行表示为$0

2、命令格式

    

用法格式:
awk [options] 'script' FILE
awk [options] '/pattern/{action}' FILE

       

      

 3 、地址界定:使用pattern模式匹配

    

①地址定界/pat1/,/pat2/ 显示从模式1第一次匹配到模式2第一次匹配
②/pattern/ 匹配整个模式的所有都显示
③expression表达式 > ,>=,<,<=,==,!=,~
④BEGIN:执行前的所准备工作
⑤END  :执行后的收尾工作

     

4、 awk常用的四中分隔符

 

输入:行分隔符;字段分隔符
输出:行分隔符;字段分隔符

5、 awk的内置变量

   

NF:字段数
FS:读入行时使用的字段分隔符,默认为空白
OFS:输出时使用的字段分隔符,默认为空白

6、举例说明   

        

    1)

1)只显示df -h 输出结果的第1列数据

    awk的基本用法_awk_02

     (awk '{print $1}'  --->awk没有设定分隔符,那么默认为空白;后边紧跟动作{print $1}显示第1个参数的所有内容)

 

      

    2)使用 表达式匹配

查找/etc/passwd中,用户ID大于等于500的用户名

                                                     

   awk的基本用法_awk_03

     (解析:/etc/passwd的字段分隔符为: 地址界定为$3>=500 此处使用的是>=表达式;动作{print $1}显示位置为$1    的 用户名;查找的文件为/etc/passwd用户数据库文件)

 

 

    3)使用pattern模式匹配

      

查找以/bin/bash为默认shell的用户

  

    awk的基本用法_awk_04

   

       (解析:分隔符为冒号:模式为$7~/bash$/)动作{print $1} 查找的文件/etc/passwd

 

        看到此处如果对$7~/bash$/有不理解的同学,请阅读我前边的博客《漫谈正则表达式》

 

    4)使用BEGIN模式匹配

     

显示组ID小于500的组

 

 awk的基本用法_awk_05    

指定冒号为分隔符的另一种表达方式{FS=":"}

      awk的基本用法_awk_06

   5)OFS模式匹配

     

OFS定义输出格式
查找用户ID大于等于500的用户,并以冒号隔开的形式显示用户名和其默认shell

       awk的基本用法_awk_07

 

       

   

以上为awk的一些基本用法,关于awk的高级用户后期会陆续推出,敬请期待。

 

求各位大神指点