Linux学习-10月18(awk)

9.6/9.7 awk

一、awk简介

   1. awk是一种编程语言,用于对文本和数据进行处理的

   2. 具有强大的文本格式化能力

   3. 利用命令awk,可以将一些文本整理成为我们想要的样子

   4. 命令awk是逐行进行处理的

    

二、awk使用示例

  • 指定分割符号进行分割:

        awk -F ':' '{print $1}'  passwd

        -F:指定分隔符,如果不指定分隔符默认是以空格或者空白行,作为分割

        $1:表示打印第一段,如果是$2就是打印第二段

        

        多段打印:

        awk -F ':' '{print $1,$3,$5}'  passwd 

        

        打印全部行:

        awk -F ':' '{print $0}' passwd

        

  • awk匹配

        awk '/root/' passwd

        

        awk可以使用正则,并且自带脱意功能,不需要像grep -E 和sed -r 进行脱意

        

        

  •   awk匹配行,并进行分割

          匹配带root的行,并打印第一、第三段

           

  •  awk也支持多个匹配,并进行分割

           匹配带root的行,并打印第一、第三段

           匹配带user的行,并打印第一段、第三段、第四段

           awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3,$4}' passwd

           

  • 使用正则进行打印匹配root或user行,并打印第一段

        awk -F ':' '/root|user/ {print $1}' passwd

        

  • 使用数学运算匹配

        1、匹配第三段等于0的,这里可以不输入print也会默认打印。

        awk -F ':' '$3==0' passwd

       

        2、匹配第三段大于1000的并指定打印第五段

       

        3、注意的是如果数字中使用了""号,会认为是字符串则会按ascll码进行排序

        

    4、不等于

        匹配第三段不等于4

        awk -F ':' '$3 != 4 {print $4}' passwd 

    5、&&和||

        匹配第三段大于1000,并且第六段等于/home/wxy的

         awk -F ':' '$3>=1000 && $6 =="/home/wxy"' passwd 

        

        awk -F ':' '$3==1000 || $6 =="/home/wxy"' passwd

        

  • awk 内置变量

        1、输出分隔符:OFS

         

    2、NR:显示行数

          

         NR也可以用来做判断,比如说只打印前10行:

            awk -F ':' 'NR <=10 {print NR":" $0}' passwd

        

    3、NF:显示段数

        awk -F ':' '$3 >=1000  {print NF" " $0}' passwd

        

  • awk改变值

       将第一段全部改为root

        awk -F ':' '$1="root"' passwd

        

        赋值后所有的分割符都没了,可以再使用OFS加上:

        awk -F ':' '{OFS=":"} $1="root"' passwd

        

  • awk求和

        统计第三段的相加的总和

        awk -F ':' '{(oto=oto+$3)};END {prin^Coto}' passwd

        

  • awk if判断

        awk -F ':' '{if($1=="root") {print $1}}' passwd 

        

    

猜你喜欢

转载自my.oschina.net/u/3755326/blog/2250547