当前位置: 首页 > news >正文

游戏日志统计操作次数前三的用户

题目

游戏服务器日志记录格式为 [时间戳, 玩家ID, 操作类型(登录/战斗/退出)],统计 每个玩家每日(按时间戳日期划分)的操作次数,输出操作次数最多的前 3 名玩家及次数。

日志内容如下:

[2023-05-15T10:30:45, 1001, 登录]
[2023-05-15T14:20:10, 1002, 战斗]
[2023-05-15T16:45:22, 1001, 退出]
[2023-05-16T09:15:30, 1002, 登录]
[2023-05-16T11:30:45, 1003, 战斗]
[2023-05-16T15:20:10, 1001, 战斗]
[2023-05-16T17:45:22, 1002, 退出]

解答

python

def get_count():import pandas as pddf = pd.read_csv('123.txt')df.columns = ['time', 'id', 'action']df['sum'] = 1df = df.groupby(['id']).agg({'sum': 'sum'}).reset_index()df = df.sort_values(by=['sum'], ascending=False).head(3)print(df)

shell

#!/bin/bash# 检查日志文件是否存在
if [ ! -f "game.log" ]; thenecho "错误: game.log 文件不存在"exit 1
fi# 提取日期和玩家ID,统计每个玩家每日操作次数
awk -F '[], ' '{# 提取日期部分(假设格式为YYYY-MM-DD)date=substr($1, 2, 10);# 提取玩家IDplayer_id=$3;# 累计计数count[date, player_id]++;
}
END {# 输出统计结果for (key in count) {split(key, parts, SUBSEP);print parts[1], parts[2], count[key];}
}' game.log | sort -k1,1 -k3,3nr | awk '
# 按日期分组,找出每组前三名
{current_date=$1;if (current_date != prev_date) {# 新的日期,重置计数器rank=0;prev_date=current_date;print "\n日期:", current_date;print "玩家ID\t操作次数";}if (rank < 3) {# 输出前三名printf "%s\t%d\n", $2, $3;rank++;}
}'

相关文章:

  • Linux日志分割压缩实战指南
  • 手写RPC框架<四> 负载均衡
  • 不同厂商保障UEFI/BIOS安全的技术与机制详解
  • 界面控件DevExpress WPF v24.2新版亮点:报表等组件功能升级
  • thinkphp 一个系统在同一个域名下,一个文件夹下如何区分多站点——穷人的精致规划——仙盟创梦IDE
  • MyBatis实战指南(六)自动映射
  • 债券与股票:投资市场的两大基石
  • 用 OpenSSL 库实现 3DES(三重DES)加密
  • SSL错误无法建立安全连接
  • 三数之和-力扣
  • Koji构建系统宏定义注入与Tag体系解析
  • Bright Data网页抓取工具实战:BOSS直聘爬虫 + PandasAI分析洞察前端岗位市场趋势
  • 西安java面经1
  • Node.js Conf 配置库要点分析 和 使用注意事项
  • 云原生安全实践:CI/CD流水线集成DAST工具
  • 【Lua热更新知识】学习一 Lua语法学习
  • Delphi 获取 XP系统 mac地址
  • 四大LLM 微调开源工具包深度解析
  • 算法第13天|继续学习二叉树:平衡二叉树(递归)、二叉树所有路径(递归)、左叶子之和(递归)
  • mysql如何快速生成测试大数据库
  • 平面设计需要用到的软件/东莞seo优化排名推广
  • 深圳外贸建站网络推广联客易/市场营销公司有哪些
  • 做网站需要写代码吗/个人网站设计作品
  • 怎么样才能让网站/seo常用分析的专业工具
  • 北京江苏省住房和城乡建设厅网站/seo排名推广
  • 西安营销型网站制作价格/百度广告点击软件源码