三剑客6_awk

 4) 三剑客-awk

三剑客6_awk

 4.1)特点与应用场景

awk
一门语言,类似于C语言
过滤,统计,计算
过滤,统计日志

 4.2 执行过程

     awk -F, 'BEGIN{print "name"}{print $2}END{print "end of file"}'  文件名

    “以逗号为分隔符,取第二列”

三剑客6_awk

 

 三剑客6_awk

 

 

4.3)行与列

名词 awk中叫法 一些说明
记录 record 每一行默认通过回车分割的
字段,域 filed 每一列默认通过空格分隔的
awk中行和列结束标记都是可以修改的    

         ---1  取行:

awk    
NR==1 取出某一行  
NR>=1&&NR<=5 取出1到5行 范围  
符号 > < >= <= == !=  
     

         三剑客6_awk

  -----2)取列

               -F 指定分隔符,指定每一列结束标记(默认是空格,连续的空格 tab键)

                $数字  取出某一列,注意:在awk中$内容 一个意思 表示取出某一列

                $0 整行的内容

                {print XXX}

                $NF表示最后一列

三剑客6_awk取出第5列和最后一列,按列对齐(column -t)

####取出passwd第一列和最后一列

三剑客6_awk

 

 #####使用awk调换passwd 第一列和最后一列内容,然后显示每一行的内容(调换后的)

三剑客6_awk

 

 

 

三剑客6_awk

 

 3)小结

    行与列 名称

    awk取行与取列,指哪打哪

    ##取出网卡IP内容

三剑客6_awk

 

 

 

 

 

    awk内置变量

内置变量    
NR Number of Record记录号,行号  
NF Number of Field 每行有多个字段(列)$NF表示最后一列  
FS -F: 等价于-v FS=:   Field Separator字段分隔符,每个字段结束标记  
OFS Output Field Separator输出字段分隔符(awk显示每一列的时候,每一列之间通过什么分隔,默认是空格)  

 

 

4.4 awk模式匹配

     awk -F"[ /]+" 'NR==3{print $3}'

awk -F"[ /]+" 'NR==3{print $3}'
命令 选项 '条件”{动作}'
    '找谁{干啥}'
    '模式{动作}'
   

<'pattern{action}'

比较符号: >  <  >=  <=  ==  !=

正则:

范围 表达式:

特殊条件:BEGIN和END

 

1)比较表达式-参考上面取行部分

2)正则

    //支持扩展正则

    awk可以精确到某一列,某一行中包含/不包含......内容

    ~包含

    !~不包含

 

正则 awk正则
^表示以...开头的行 某一列的开头 $3~/^oldboy/
$表示以...结尾的行 某一列的结尾 $4~/lidao$/
^$表示空行 某一列是空的 很少用

####第三列里以1开头

三剑客6_awk

 

 ####找出 第三列以2开头的行,并显示第一列,第三列和最后一列

三剑客6_awk

 

  ####找出 第三列以1或者2开头的行,并显示第一列,第三列和最后

三剑客6_awk

 

 3)表示范围

    /哪里开始/,/哪里结束/      常用

    NR==1,NR==5 从第一行开始到第5行结束,类似于sed -n '1,5p'

三剑客6_awk

 

 #显示指定实际范围内容的IP地址和用户访问uri

三剑客6_awk

 

 4)特殊模式BEGIN{}和END{}

模式 含义 应用场景
BEGIN{} 里面的内容会在awk读取之前执行

1)进行简单统计,计算,不涉及读取文件(常见)

2)用来处理文件之前,添加个表头(了解)

3)用来定义awk变量(很少用,因为可以用-v)

END{} 里面的内容会在awk读取之后执行

1)awk进行统计,一般过程:先进行计算,最后END里面输出结果

2)awk使用数组,用来输出数组结果(常见)

     

   END{}统计计算

   统计方法

 

统计方法 简写形式 应用场景
i=i+1 i++ 计数,统计次数
sum=sum+??? sum+=??? 求和,累加
注意:i,sum都是变量    

###统计/etc/service里面有多少个空行

三剑客6_awk

 

 ###seq 100 求和1+2+3+....+100 awk实现

三剑客6_awk

 

 ###如果想查看过程

三剑客6_awk

 

上一篇:Linux三剑客案例练习合集


下一篇:linux磁盘管理、三剑客之awk语法命令详解