You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash日志文件检索:提取高频/最新使用的文件名

嘿,我来帮你搞定这两个需求!针对你日志文件的格式,咱们可以用Bash里的常用工具组合来实现,简单高效。

提取使用频率最高的文件名

你的日志里每个记录条目是「日期 时间 文件名」的格式,所以首先得把所有文件名提取出来,再统计出现次数。直接用这条命令就行:

# 提取所有文件名并统计频率最高的(包含次数)
awk '{for(i=3;i<=NF;i+=3) print $i}' your_log_file | sort | uniq -c | sort -nr | head -n1

# 如果只想得到纯文件名,去掉前面的次数,再加一步
awk '{for(i=3;i<=NF;i+=3) print $i}' your_log_file | sort | uniq -c | sort -nr | head -n1 | awk '{print $2}'

我拆解下每一步的作用:

  • awk '{for(i=3;i<=NF;i+=3) print $i}':遍历日志的所有字段,从第3个字段开始(每个条目里的文件名位置),每3个字段取一个,把所有文件名单独列出来。
  • sort:把文件名排序,让相同的文件名排在一起,方便后续统计。
  • uniq -c:统计每个文件名的出现次数,结果会是「次数 文件名」的格式。
  • sort -nr:按次数从高到低排序(-n表示按数字排序,-r是倒序)。
  • head -n1:取排序后的第一行,就是出现次数最多的记录。
提取最后一次使用的文件名

如果你的日志是按修改时间顺序写入的,那最后出现的文件名就是最后一次使用的。用这条命令就能拿到:

awk '{for(i=3;i<=NF;i+=3) print $i}' your_log_file | tail -n1

原理很简单:还是用awk提取所有文件名,然后用tail -n1取最后一行,也就是日志里最后出现的那个文件名。

如果之后你调整了脚本,让每个记录单独占一行,那命令可以更简化:awk '{print $3}' your_log_file | tail -n1,直接取每行第3个字段(文件名)再取最后一行就行。

内容的提问来源于stack exchange,提问作者mamlask

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:38:25