Linux运维笔记
我们一直在努力

如何在Linux中用bash计算同一列数字的和

在linux中经常遇到一些需要统计同一列数字的总额,要达到这样的效果可以用到awk命令

比如需要计算nginx日志中一天访问量,在排除掉了一些特定IP后,我们把日志给筛选然后统计了每个IP的访问量,那如何将第一列访问量PV统计起来这个就是我们需要做的

 

cat /var/logs/nginx/access.log|awk '{print $1}'|sort|uniq -c|awk '{print $1}'|awk '{sum+=$1}END{print sum}'

这里稍微拆分记录下命令的作用

第一部分是 cat /var/logs/nginx/access.log|awk ‘{print $1}’|sort|uniq -c

这里的作用是查看日志,打印出带有IP的那一列,我的日志格式自定义了,所以以空格为分割第一列就是IP,IP列得到后经过sort排序,然后通过uniq去重,-c是在去重的同时进行计数

第二部分是 awk ‘{print $1}’|awk ‘{sum+=$1}END{print sum}’

这里的作用是打印出第一列带有计数的列,然后用awk一一相加,计算的方式是这样的

先创建一个变量,名字叫 sum,然后把第一列数值都进行相加计算,计算完在结束的时候再最后打印出 sum 变量,这个变量就是IP访问量的总和。

还是很简单的。

赞(0) 打赏

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址