zoukankan      html  css  js  c++  java
  • awk学习[参考转载]

    一.基本示例

    1.last -n 5 | awk '{print $1}'   $0代表全部

    2.last -n 5 | awk -F:  '{print $1}'    -F代表设置分割符, :代表设置的分割符,也可以写成-F ':' (默认空格是分隔符)

    3.last -n 5 | awk -F:  'BEGIN {print "name,shell"} {print $1} END {print "blue,/bin/nosh"}'

    4.last -n 5 | awk '/admin/'   //表示正则

    5.last -n 5 | awk '/^admin/{print $1}'

    二.内置变量

    ARGC               命令行参数个数
    ARGV               命令行参数排列
    ENVIRON            支持队列中系统环境变量的使用
    FILENAME           awk浏览的文件名
    FNR                浏览文件的记录数
    FS                 设置输入域分隔符,等价于命令行 -F选项
    NF                 浏览记录的域的个数
    NR                 已读的记录数
    OFS                输出域分隔符
    ORS                输出记录分隔符
    RS                 控制记录分隔符

    示例:last -n 5 | awk -F: '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}'

    三.print和printf

    
    

    print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。

    
    

    printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

    四.自定义变量

    last -n 5 | awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}'

    以上中,count就是自定义的变量

    ls -l | awk 'BEGIN {size=0;} {size=size+$5} END {print "size is", size}'  某个文件夹中所有文件的字节数

    ls -l | awk 'BEGIN {size=0;} {size=size+$5} END {print "size is", size/1024/1024, "M"}'  某个文件夹中所有文件的大小,单位为M

    五.if判断(if, else if, else)

    ls -l | awk 'BEGIN {size=0;} {if($5>120000){size=size+$5}} END {print "size is", size/1024/1024, "M"}'  某个文件夹中所有文件大小大于120000字节的文件的总大小

    六.循环(awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同)

    last -n 5 | awk -F: 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}'   awk中的数组与变量都是自动创建的

    ls -l | awk 'BEGIN {size=0;ind=0;con=""} {if($5>size){size=$5;ind=NR;con=$0}} END {print size, "index is ",ind,"content is",con}'

    七.更多请参考

    http://www.gnu.org/software/gawk/manual/gawk.html

    示例:

    cat /proc/meminfo|awk 'BEGIN{total=0;cached=0;free=0}{if(NR==1)total=$2;if(NR==2)free=$2;if(NR==4)cached=$2}END{print (free+cached)/total}'

     
  • 相关阅读:
    【打印】windows打印控件,Lodop.js介绍
    【MySQL】MySQL查询数据库各表的行数
    【MySQL】MySQL中查询出数据表中存在重复的值list
    【php】php5.0以上,instanceof 用法
    日期转换:Cannot format given Object as a Date (SimpleDateFormat的parse和format)
    Groovy 正则表达式 匹配点号
    什么是开发框架
    SoapUI 增大使用内存
    Groovy API link
    Groovy 跳出each循环
  • 原文地址:https://www.cnblogs.com/zhangfei/p/4619150.html
Copyright © 2011-2022 走看看