写在前面

awk命令求极值和均值需要熟悉该命令的基本用法,如果你不熟悉该命令,请先阅读shell脚本之awk命令——分隔符介绍一文。本篇博文带你熟悉求平均值、最大值、最小值的方法,并以实际的应用带你进一步掌握awk的高级用法。
以下为求平均值、最大值、最小值用到的文件data,使用cat data查看内容为
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0

awk求平均值

awk '{sum += $1} END {printf "NR = %d,Average = %3.3f\n",NR,sum/NR}' data

或者使用cat命令组合使用

cat data|awk '{sum += $1} END {printf "NR = %d,Average = %3.3f\n",NR,sum/NR}'

printf和C语言中的用法类似,你可以使用%f输出小数,%d输出整数等等。awk中的NR表示有多少行内容。
计算结果:

awk求最大值

awk 'BEGIN{ max = 0} {if ($1 > max) max = $1; fi} END{printf "Max = %.1f\n",max}' data

或者

cat data|awk 'BEGIN{ max = 0} {if ($1 > max) max = $1; fi} END{printf "Max = %.1f\n",max}'

计算结果:

awk求最小值

求最小值的时候需要注意,min的初始值需要设置为一个大数,最好大于所有数的最大值。如果min被设为初始值0,那下面的结果将是错误的。

awk 'BEGIN{min = 65535} {if ($1 < min) min = $1;fi} END{printf "Min = %.1f\n",min}' data

或者

cat data|awk 'BEGIN{min = 65535} {if ($1 < min) min = $1;fi} END{printf "Min = %.1f\n",min}'

计算结果:

awk求极值、均值的实际应用

求某个进程在某段时间内的CPU占用峰值、平均值
假设现在有一个进程HaHelper,要统计该进程的CPU占用,使用top命令查看它的cpu使用:
top -d 1|grep HaHelper,一秒刷新一次CPU使用情况。

红框所在的列即为CPU占用,现在把这个结果输出到文件中,方便后续统计。
使用重定向符号>把执行结果输出到文件top -d 1|grep HaHelper > hacpu.log
此处为了简化问题,只取了前10条记录:此处可以根据需要,取24h的数据24*60*60行记录...
cat hacpu.log | head -n 10

如何拿到CPU占用那一列的值呢?awk命令很容易就能帮你做到这个。cat hacpu.log |head -n 10|awk '{print $10}',也可能是$9,第九列的内容,取决于系统是否把空列作为一列来处理。

输出上面的数据到文件中:
cat hacpu.log |head -n 10|awk '{print $10}' > total.log
求峰值(最大值)

awk 'BEGIN{max=0} {if ($1>max) max=$1; fi} END{printf "Max=%.1f\n",max}' total.log


最小值

awk 'BEGIN{min=65535} {if ($1<min) min=$1;fi} END{printf "Min=%.1f\n",min}' total.log


平均值

awk '{sum+=$1} END {printf "NR = %d,Average = %3.3f\n",NR,sum/NR}' total.log


awk命令非常强大,与其他命令结合使用可以很好帮我们解决一些问题,随着深入了解,相信你会越来越熟练。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux实用命令awk命令31200 人正在系统学习中

[转帖]shell脚本之awk命令——按列求平均值、最大值、最小值的更多相关文章

  1. shell脚本,awk合并一列的问题。

    文件 file2内容如下:0 qwert1 asdfghjk2 asdjkl2 zxcvbn3 dfghjkll4 222224 tyuiop4 bnm 让第一列相等的合并成一行,不要第一列,也就是变 ...

  2. shell脚本,awk取中间列的方法。

    解释 1.$(int(NF/2)+1) 中int(NF/2)等于3,然后加1,就得到中间的4了. 2.$(NF/2+0.5) 相当于得出的是整数.NF/2是3.5,再由3.5+0.5,所以就是4了,也 ...

  3. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  4. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  5. shell脚本一条命令直接发送http请求(xjl456852原创)

    我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...

  6. shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出

    shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...

  7. (转)shell脚本之seq命令

    shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...

  8. shell脚本批量执行命令----必需判断上一步执行结果--没有捷径

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  9. SHELL 脚本----常用的命令

    一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂   建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行she ...

  10. shell脚本中常用命令

    1           Shell中的特殊符号 1.1           $  美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值. 1.2    ...

随机推荐

  1. Feign源码解析5:loadbalancer

    背景 经过前面几篇的理解,我们大致梳理清楚了FeignClient的创建.Feign调用的大体流程,本篇会深入Feign调用中涉及的另一个重要组件:loadbalancer,了解loadbalance ...

  2. 【API 进阶之路】做 OCR 文字识别,谁说必须要有 AI 工程师?

    摘要:有些功能还真不能光凭自己的直觉和认识,来自一线的声音才是最真实的用户需求.比方说名片录入的需求. 在公司技术委员会副主席这个位置上干了有几个月了,期间,我一方面给研发团队整理各种文档资料,做技术 ...

  3. 使用Plist编辑器——简单入门指南

      本指南将介绍如何使用Plist编辑器.您将学习如何打开.编辑和保存plist文件,并了解plist文件的基本结构和用途.跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plis ...

  4. 字节跳动基于 Apache Hudi 的多流拼接实践方案

    字节跳动数据湖团队在实时数仓构建宽表的业务场景中,探索实践出的一种基于 Hudi Payload 的合并机制提出的全新解决方案. 字节跳动数据湖团队在实时数仓构建宽表的业务场景中,探索实践出的一种基于 ...

  5. Snack3 3.1.10的新特性及应用

    <dependency> <groupId>org.noear</groupId> <artifactId>snack3</artifactId& ...

  6. Axure 单键快捷键

    如果怕误操作,可以把它关闭

  7. python jira 取提出指向未解决的问题

    #!/usr/bin/python # -*- coding: utf-8 -*- import sys, os,time,requests,datetime import schedule from ...

  8. Django增删改查

    增删改查.配置对应路由,函数,视图.报错注意看控制台. 添加取到前台传来的参数,后端给予验证.入库 编辑,取到当前编辑得id,在后台查到对应数据.重新update 删除,取到当前点击ID,后台dele ...

  9. MIR7创建预制发票BAPI

    1.事务代码MIR7 前台输入采购订单等相关字段进行开票 2.代码实现 调用BAPI:BAPI_INCOMINGINVOICE_PARK创建发票 "--------------------@ ...

  10. mysql关于time时间戳相关使用

    1.当前时间: select now(); 应用: select * from game where time > now(); 2.时间的偏移: 向前偏移10天: select date_su ...