注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

awk使用案例收集  

2014-07-20 17:43:58|  分类: linux工具命令 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1)AWK基本语法
一、AWK基本语法

    AWK的功能太强大了,不可能用简单的语言来中概括,我这里简单的说明一下它的语言结构,以及后面我会使用一个简单的统计示例来说明它的使用。

    语法结构:
 
    awk 
    'BEGIN 
    { 
        #定义及预处理 
    } 
    { 
        #处理代码,这里根据输入做处理,如果输入是多行的会做循环处理 
    } 
    END 
    { 
        #结果输出 
    }' 

    以下说明一下这种结构:

  
    2、在BEGIN块的第一个花括号"{}"中,可以定义一些变量或者做一些预处理,以便我们在后面可以使用这些变量,在这里定义的变量是作为全局变量使用的,并且这里执行的动作是在第一个输入行读入之前进行的,也就是说在处理输入内容时,首先执行的是这里的逻辑代码;

    3、第二个花括号"{}"中,用于对输入内容的处理,因为awk是输入,如果没在输入操作行,它将什么也不能够做(除了上面提到的第一个花括号"{}"中逻辑,因为上面的动行是在输入之前进行的操作),如果有多条输入行,那这里将对每个输入行做循环的处理;

    4、END的花括号"{}"中,我们可以对花括号"{}"中执行的结果逻辑,进行再处理,如将统计结果求平均等操作。

 二、AWK语法结构

    上面有提到AWK是一种编程语言,那它肯定有自己的逻辑处理结构,和C、JAVA语言非常相似,你如果是C、JAVA的开发者,保你一看就会,看下面的关系符介绍和流程控制语句吧。

    1、关系操作符和布尔操作符:
  
操作符   描述
<             小于
>             大于
<=          小于等于
>=         大于等于
==          等于
!=         不等于

    2、IF条件判断:

    语法格式:
    if(expression){ 
        action1 
    }else{ 
        action2 
    } 

多IF判断:
    if(expression1){ 
        action1 
    }else if(expression2){ 
        action2 
    }else{ 
        action3 
    } 

    简单示例:
    if(a<100){ 
        b=1 
    }else if(a>=100 && a<1000){ 
        b=2 
    }else{ 
        b=3 
    } 

    2、条件操作符:
    语法格式:

    expr ? action1 : action2 

    简单示例:
    grade = (avg>=60) ? "pass":"fail" 

    3、WHILE循环:

    语法格式:
       while(condition){ 
        action 
    } 
    或者 
    do{ 
        action 
    } while(condition) 

    简单示例:
    BEGIN{ 
        while(x<4){ 
            print x 
            x++ 
        } 
    } 
    或 
    BEGIN{ 
        do{ 
            print x 
            x++ 
        }while(x<4) 
    } 

    4、FOR循环:

    语法格式:

    for(first; end; increment){ 
        action 
    } 

    简单示例:
    for(x=1;x<4;x++){ 
        print x 
    }
2)使用sensors与awk计算系统核心的温度
  :bash命令代码: sensors |grep temp1 |awk 'BEGIN{total=0}{total+=$2}END{print total/3}'
  :php代码: echo `sensors |grep temp1 |awk 'BEGIN{total=0}{total+=$2}END{print total/3}'`;
awk使用案例收集 - itoedr - itoedr的it学苑
改进:
       在AWK环境中,FNR代表了处理对象的全部数据总行数,所以在实际工作可以改进上面的语句:
     :bash代码段: sensors |grep temp1 |awk 'BEGIN{total=0;}{total+=$2}END{print total/FNR} ';
     :php代码段: echo `sensors |grep temp1 |awk 'BEGIN{total=0;}{total+=$2}END{print total/FNR} ' `;
awk使用案例收集 - itoedr - itoedr的it学苑
 
  评论这张
 
阅读(128)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017