[转帖]shell脚本之awk命令——按列求平均值、最大值、最小值

shell,脚本,awk,命令,平均值,最大值,最小值 · 浏览次数 : 0

小编点评

**在开始之前** 了解 awk 命令的基本用法,了解 awk 求平均值、最大值、最小值的实际应用。 **使用 awk 求平均值** ```awk '{sum += $1} END {printf \"NR = %d,Average = %3.3f\\",NR,sum/NR}' data ``` **使用 awk 求最大值** ```awk 'BEGIN{ max = 0} {if ($1 > max) max = $1; fi} END{printf \"Max = %.1f\\",max}' data ``` **使用 awk 求最小值** ```awk 'BEGIN{min = 65535} {if ($1 < min) min = $1;fi} END{printf \"Min = %.1f\\",min}' data ``` **使用 awk 求极值、均值的实际应用** ```awk 'BEGIN{max=0} {if ($1>max) max=$1; fi} END{printf \"Max=%.1f\\",max}' data ``` **使用 awk 求峰值 (最大值)** ```awk 'BEGIN{max=0} {if ($1>max) max=$1; fi} END{printf \"Max=%.1f\\",max}' total.log ``` **使用 awk 求最小值** ```awk 'BEGIN{min=65535} {if ($1<min) min=$1;fi} END{printf \"Min=%.1f\\",min}' total.log ``` **使用 awk 求平均值** ```awk '{sum+=$1} END {printf \"NR = %d,Average = %3.3f\\",NR,sum/NR}' total.log ``` **使用 awk 求极值、均值** ```awk 'BEGIN{max=0} {if ($1>max) max=$1; fi} END{printf \"Max=%.1f\\",max}' total.log ```

正文

写在前面

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命令——按列求平均值、最大值、最小值相似的内容:

                    [转帖]shell脚本之awk命令——按列求平均值、最大值、最小值

                    文章目录 写在前面awk求平均值awk求最大值awk求最小值awk求极值、均值的实际应用 写在前面 awk命令求极值和均值需要熟悉该命令的基本用法,如果你不熟悉该命令,请先阅读shell脚本之awk命令——分隔符介绍一文。本篇博文带你熟悉求平均值、最大值、最小值的方法,并以实际的应用带你进一步掌握a

                    [转帖]BASH编写入门与实例

                    1 2 3 4 5 6 7 8 9 10 怎么写shell脚本: 。使用任何编辑工具编写shell脚本 例如vi -#!/bin/bash #在第一行放置头格式说明 -#!/usr/bin/gawk //awk需要添加的头格式,让系统知道用什么方式去解析此文件 -#!/usr/local/bin/p

                    [转帖]生产环境shell脚本安全之shc编译(转C)

                    https://www.jianshu.com/p/17399dcd1471 应用场景很多,如,中小项目大多使用mysql,那么在你的mysqladmin备份脚本里可能存在明文的密码,此时由于公司服务器可能多个同事使用,那么转码加密脚本至关重要! 1,首先 SHC安装(建议使用交新版本,如 4.0.

                    [转帖]Linux之Shell 脚本执行三种方式

                    什么是Shell? Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言<解释型的编程语言>,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支

                    [转帖]shell编程之循环语句

                    目录 一、循环语句for循环for语句的结构嵌套循环 while语句的结构while语句应用示例 until语句的结构until语句示例 二、跳出循环continue跳出循环break跳出循环 三、常用循环脚本实例循环打印9*9乘法表数字累加脚本(1-100)常用转义字符购物shell 计算器正等腰

                    [转帖]Bash脚本编程学习笔记10:参数展开

                    https://www.cnblogs.com/alongdidi/p/bash_parameter_expansion.html 简介 原标题叫做《Bash脚本编程之字符串处理》。 其实这里说得字符串处理,对应的是bash官网中的【Shell Parameter Expansion】,不过直接去看

                    [转帖]shell脚本循环查询数据库实现数据输出到csv

                    https://blog.csdn.net/m0_46897923/article/details/125906115?spm=1001.2014.3001.5501 可以利用这个思路高点事情吧.. 一、shell脚本和数据文件 1.shell脚本 cat data.txt|while read l

                    [转帖]Shell 脚本中经典的13个面试题

                    经典的Shell十三问 1. 为何叫做shell?2. Shell prompt(PS1)与Carriage Return(CR)的关系?3. 别人echo, 你也echo, 是问echo知多少?4. ""(双引号)与(单引号)有什么区别?5. var=value? export前后差在哪?6. e

                    [转帖]shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)

                    https://developer.aliyun.com/article/885658 简介: shell变量 shell变量是指用一个特定的字符串去表示不固定的内容 1.变量的类型 1.1自定义变量 一般情况下不怎么使用环境变量,如果需要在其他文件中引入某个文件的变量则在脚本最开始的位置使用sou

                    [转帖]Shell脚本中利用expect实现非交互式

                    https://developer.aliyun.com/article/885723?spm=a2c6h.24874632.expert-profile.295.7c46cfe9h5DxWK 简介: expect非交互式 expect可以在脚本中完成一些交互式的操作,例如远程登录时要输入yes或者