14.shell awk数组

news2025/6/27 10:30:34

awk数组

          • awk数组
          • awk数组示例
          • Nginx日志分析

awk数组

1.什么是awk数组
数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值

2.awk数组应用场景
通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等

3.awk数组统计技巧
1.在awk中,使用数组时,不仅可以使用123…n作为数组索引,也可以使用字符串作为数组索引。
2.要统计某个字段的值,就将该字段作为数组的索引,然后对索引进行遍历。

4.awk数组的语法
array_name[index]=value


awk数组示例

例:统计passwd文件中,各种shell类型的个数
以:为分隔符,第7列就是shell类型,可用$7表示,或用$NF表示

BEGIN{
	FS=":"
}
{ #赋值操作
	sh[$NF]++ #如果出现相同类型shell就让其加1,出现不同类型的shell就新存一个数组
}
END{ #赋值完成后,需要通过循环的方式将其索引的次数遍历出来
	for (item in sh){
		print item,sh[item]
	}
}

在这里插入图片描述


Nginx日志分析

日志格式如下:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

52.55.21.59 - - [25/Jan/2018:14:55:36 +0800] "GET /feed/ HTTP/1.1" 404 162 "https://www.google.com/" "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52" "-"

这里随便找了个日志进行测试,所以日志量不够,将就看吧

1.统计访问最多的10个IP

awk '{accessip[$1]++} END{for(item in accessip){printf "%-20s %-20s \n",accessip[item],item}}' access.log |sort -nr|head -10

在这里插入图片描述

{	
	accessip[$1]++ #统计每个IP出现的次数,出现相同的IP 就自增,不同的IP就存到新的数组
}
END{
	for(item in accessip){
	print accessip[item],item  #accessip[item]对应一个IP出现的次数,item表示IP地址,也就是数组的索引
	}
}

在这里插入图片描述

这里的sort 命令用于排序,-n:按照数值大小进行排序,-r以相反的顺序来排序


2.统计访问大于100次的IP

在之前的基础上加一个判断,判断IP的访问量是否大于100,大于就打印

awk '{accessip[$1]++} END{for(item in accessip){if(accessip[item]>100){ printf "%-20s %-20s \n",accessip[item],item}}}' access.log |sort -nr

在这里插入图片描述

{ #统计每个IP出现的次数
	accessip[$1]++
}
END{  #accessip[item]对应一个IP出现的次数,item表示IP地址,也就是数组的索引
		for(item in accessip){
			if(accessip[item]>100){
			printf "%-20s %-20s \n",accessip[item],item
		}
	}
}

在这里插入图片描述


3.统计访问最多的10个页面($request top 10)
第7列是请求到的内容

awk '{req[$7]++}END{for(item in req){print req[item],item}}' access.log |sort -rn|head -10

在这里插入图片描述

{
	req[$7]++
}
END{
	for(item in req){
		print req[item],item
	}
}

在这里插入图片描述


4.统计每个IP访问状态码数量($status)
第九列是状态码

awk '{ip_status[$1 "" $9]++}END{for(item in ip_status){print ip_status[item],item}}' access.log

在这里插入图片描述

{
	ip_status[$1" "$9]++
}
END{
	for(item in ip_status){
		print ip_status[item],item
	}
}

在这里插入图片描述


5.统计访问状态码为404及出现的次数($status)
在之前的基础上,对状态码进行判断,等于404就打印

awk '{ip_status[$9]++}END{for(item in ip_status){if(item==404){print ip_status[item],"次",item}}}' access.log

在这里插入图片描述

{
	ip_status[$9]++ 
}
END{
	for( item in ip_status){
		if(item==404){
		print ip_status[item],"次",item
		}
	}
}

在这里插入图片描述


6.统计每个URL访问内容总大小

{
	url[$7]+=$10
}
END{
	for (item in url){
	print url[item],item
}
}

在这里插入图片描述

{
        url[$7]+=$10
}
END{
        for (item in url){
                if(url[item]/1024/1024 >0) {
                          print url[item]/1024/1024"Mb",item
}

}
}

在这里插入图片描述

{
        url[$7]+=$10
        cont[$7]++
}
END{
        for (item in url){
                if(url[item]/1024/1024 >0) {
                          print url[item]/1024/1024"Mb",item,cont[item],"次"
}

}
}

在这里插入图片描述


统计各种状态码出现的数量

 awk '{code[$9]++} END {for(i in code){print i,code[i],"次"}}' acccess.log

在这里插入图片描述


{
if($9>=100 && $9<200) {
i++
}
else if ($9>=200 && $9<300) {
j++
}
else if ($9>=300 && $9<400) {
k++
}
else if ($9>=400 && $9<500) {
n++
}
else if($9>=500) {
p++
}
}
END{print i,j,k,n,p,i+j+k+n+p
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1822654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EE trade:黄金期货交易指令有哪些

在黄金期货交易中&#xff0c;投资者常用的交易指令主要包括以下几种&#xff0c;每种指令都有其特殊用途和优势&#xff1a; 市价单(Market Order) 直接按市场当前价格买入或卖出合约。 适用于追求立即成交&#xff0c;不关注价格变动的情况。 限价单(Limit Order) 设定一…

DiskMirror 简化文件IO的开发 的有效手段!

DiskMirror 用于进行磁盘文件管理的一面镜子&#xff0c;其包含许多的适配器&#xff0c;能够将任何类型的文件数据流中的数据接入到管理中&#xff0c;并将保存之后的 url 返回&#xff0c;支持不同文件所属空间的管控&#xff0c;您还可以通过此API 获取到指定 userid 下面的…

AI写真教程:Stable Diffusion 之 IPAdapter-FaceId

自Stable Diffusion发布以来&#xff0c;AI写真一直是AIGC界的热门话题。 AI写真为摄影师和艺术家提供了全新的创作工具。通过AI技术&#xff0c;艺术家可以轻松实现复杂的图像效果&#xff0c;如风格迁移、图像合成等&#xff0c;AI写真能够在短时间内完成传统摄影师和设计师…

express+vue在线im实现【一】

在线体验地址 需要用邮箱注册一个账号 在线链接 目前实现的功能 1、在线聊天(群聊) 2、实时监控成员状态 3、历史聊天&#xff0c;下拉加载 4、有新消息&#xff0c;自动滚动到最新消息&#xff0c;如果自己在查看历史记录&#xff0c;不会强行滚动 后续计划新增功能 感兴…

ERP管理系统解决方案(附ERP流程和详细解决方法)

ERP 是专门为制造企业设计的综合性管理解决方案&#xff0c;旨在优化制造业务流程&#xff0c;整合各个部门和环节&#xff0c;实现生产、供应链、质量控制和销售等方面的高效协同。 传统的制造行业会面临哪些业务痛点&#xff0c;会考虑erp解决方案&#xff1a; 生产成本高昂…

vue聊天发送Emoji表情

在用web端写聊天发送表情的功能中&#xff0c;使用web端有系统自带的unicode表情会出现每端不统一的情况&#xff0c;不好用不能统一&#xff0c;在这里我想到了一个非常好的思路&#xff0c;可以解决这个问题&#xff01; 那就是发送表情用图片的形式呈现&#xff0c;然后发给…

springboot+vue3前后端项目-部署Docker详解

一、后端yml环境配置 mysql和redis的连接之前是localhost。现在我们需要修改成容器之间的调用&#xff0c;如何知道mysql和redis的连接地址呢&#xff1f;docker compose就帮我们解决了这个问题&#xff0c;我们可以使用镜像容器的服务名称来表示链接。比如docker-compose.yml…

【精品方案】离散型制造行业智能工厂标准解决方案(49页 PPT)

引言&#xff1a;随着科技的不断进步和制造业的转型升级&#xff0c;离散型制造行业正面临着从传统制造向智能制造转型的迫切需求。离散型制造行业涉及的产品种类繁多&#xff0c;生产流程复杂&#xff0c;对生产效率、产品质量和成本控制有着极高的要求。因此&#xff0c;开发…

【linux网络(三)】HTTP协议详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. 序列化和…

【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 机器学习在疾病诊断中的应用&#x1f9e9;医学影像分析&#xff1a;从X光到3D成像带代码&#x1…

[Shell编程学习路线]——深入理解Shell编程中的变量(理论与实例)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f6e0;️Shell编程专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月12日11点40分 &#x1f004;️文章质量&#xff1a;95分 文章目录 ————前言———— 1 自定义变量 &#x1fae0;…

快速开发的UI框架:效率蹭蹭提高!!【送源码】

不知道各位用uniapp 开发移动端小程序或者网页&#xff0c;是否用UI框架。 我一般就用官方自带的&#xff0c;近期一个项目 用了uView, 感觉整体还不错&#xff0c;类似蚂蚁的风格。 特此推荐下&#xff0c;可以收藏一下&#xff0c;需要的时候记得来取哦&#xff01; 介绍 …

快捷回复话术分享:如何应对顾客愤怒骂人?

在客服的日常工作中&#xff0c;面对情绪激动、甚至愤怒发泄骂人的顾客是常见的挑战。初入此行业的小伙伴们往往在遭遇顾客的激烈情绪时感到手足无措&#xff0c;不知道如何妥善回应。为此&#xff0c;本文将分享一些实用的快捷回复话术和技巧&#xff0c;帮助新手客服更好地处…

Vxe UI vxe-table custom 实现自定义列服务端保存,服务端恢复状态,实现用户个性化列信息保存

Vxe UI vue vxe-table custom 实现自定义列服务端保存&#xff0c;服务端恢复状态&#xff0c;实现用户个性化列信息保存 支持将自定义列状态信息&#xff0c;列宽、冻结列、列排序、列显示隐藏 等状态信息保存到本地或服务端 代码 实现自定义列状态保存功能&#xff0c;只需…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

生命在于学习——Python人工智能原理(3.4)

三、深度学习 7、过拟合与欠拟合 过拟合和欠拟合是所有机器学习算法都要考虑的问题。 &#xff08;1&#xff09;基本定义 a、欠拟合 欠拟合是指机器学习模型无法完全捕获数据集中的复杂模式&#xff0c;导致模型在新数据上的表现不佳&#xff0c;这通常是由于模型过于简单…

能在电脑桌面记笔记的软件是什么 电脑笔记软件

在这个数字化高速发展的时代&#xff0c;电脑已成为我们日常工作和学习的必备工具。而对我来说&#xff0c;电脑桌面不仅仅是一个简单的工作界面&#xff0c;更是一个思考和创造的平台。我时常需要在工作时快速记录一些重要信息或灵感&#xff0c;这时候&#xff0c;能在电脑桌…

机器学习与数据挖掘知识点总结(二)分类算法

目录 1、什么是数据挖掘 2、为什么要有数据挖掘 3、数据挖掘用在分类任务中的算法 朴素贝叶斯算法 svm支持向量机算法 PCA主成分分析算法 k-means算法 决策树 1、什么是数据挖掘 数据挖掘是从大量数据中发现隐藏在其中的模式、关系和规律的过程。它利用统计学、机器学…

我的考研经历

当我写下这篇文章时&#xff0c;我已经从考研 的失败中走出来了&#xff0c;考研的整个过程都写在博客日志里面了&#xff0c;在整理并阅读考研的日志时&#xff0c;想写下一篇总结&#xff0c;也算是为了更好的吸取教训。 前期日志模板&#xff1a;时间安排的还算紧凑&#x…

视频美颜工具技术探秘:直播美颜SDK的应用与发展

今天&#xff0c;笔者将深入探讨直播美颜SDK的应用场景和发展趋势&#xff0c;揭示其背后的技术奥秘和潜力。 一、直播美颜SDK的基本原理 直播美颜SDK其基本原理包括以下几个方面&#xff1a; 人脸检测与特征定位 肤色分析与调整 瑕疵修复与细节增强 滤镜和特效应用 二、…