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

查找日志文件中​​最后一次出现某个关键词的上下 20 行​​

​方法 1:使用 grep + tac + sed(推荐)​

tac logfile | grep -m1 -A20 -B20 "your_keyword" | tac
  • ​原理​​:
    • tac 反向读取日志(从最后一行开始)。
    • grep -m1 只匹配​​第一次​​出现的关键词(即原日志的最后一次)。
    • -A20 -B20 显示匹配行的​​前后 20 行​​。
    • 再次 tac 恢复原始顺序。

​示例​​:

tac /var/log/nginx/error.log | grep -m1 -A20 -B20 "error" | tac

​方法 2:使用 awk 记录匹配行号并提取​

awk '/your_keyword/ {last_match=NR} END {if (last_match) print last_match}' logfile | xargs -I{} awk 'NR>={}-20 && NR<={}+20' logfile
  • ​原理​​:
    • awk 记录最后一次匹配的行号 last_match
    • xargs 传递行号,再次用 awk 提取 last_match ± 20 行。

​示例​​:

awk '/error/ {last_match=NR} END {if (last_match) print last_match}' /var/log/syslog | xargs -I{} awk 'NR>={}-20 && NR<={}+20' /var/log/syslog

​方法 3:使用 sed 直接提取(适合小文件)​

line=$(grep -n "your_keyword" logfile | tail -1 | cut -d: -f1) && \
sed -n "$((line>20 ? line-20 : 1)),$((line+20))p" logfile
  • ​原理​​:
    • grep -n 获取所有匹配行号,tail -1 取最后一次。
    • sed -n "a,bp" 打印从 ab 的行(自动处理边界情况)。

​示例​​:

line=$(grep -n "failed" app.log | tail -1 | cut -d: -f1) && \
sed -n "$((line>20 ? line-20 : 1)),$((line+20))p" app.log

​方法 4:使用 less 交互式查找(适合手动检查)​

less +?"your_keyword" logfile
  • ​操作步骤​​:
    1. n 跳转到​​最后一个匹配项​​。
    2. -20j 向上滚动 20 行,+20j 向下滚动 20 行。

​注意事项​

  1. ​大文件优化​​:
    如果日志文件很大(如 GB 级),优先使用 tacawk 方法,避免全文件扫描。
  2. ​边界处理​​:
    如果匹配行靠近文件开头(行号 <20),上述命令会自动调整范围。
  3. ​时间戳辅助​​:
    如果日志带时间戳,可以先定位时间范围再过滤:
    grep -A20 -B20 "your_keyword" logfile | tail -41  # 近似最后匹配的±20行

​终极方案:结构化日志(如 JSON)​

如果日志是 JSON 格式,用 jq 更精准:

tac log.json | jq -c 'select(.msg | contains("error"))' | head -1 | jq . | tac

选择最适合你日志格式的方法即可!

相关文章:

  • 河北对口计算机高考C#笔记(2026高考适用)---持续更新~~~~
  • [KCTF]CORE CrackMe v2.0
  • C# 表达式和运算符(求值顺序)
  • C# winform教程(二)----checkbox
  • Python----大模型(大模型基础)
  • 拉力测试cuda pytorch 把 4070显卡拉满
  • EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
  • Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
  • AI 边缘计算网关推动各行业的数字化转型和智能化升级
  • 十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
  • 【OpenCV】相机标定之利用棋盘格信息标定
  • games101 hw1
  • 2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
  • WebRTC调研
  • CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
  • 初版BL程序一些细节整理(碎碎念)
  • Rust 学习笔记:关于共享状态并发的练习题
  • UNECE R152——解读自动驾驶相关标准法规(AEB)
  • 【向量库】Weaviate概述与架构解析
  • 0day同步!昇思MindSpore框架成功适配面壁MiniCPM4.0模型并上线魔乐社区
  • seo做的最好的网站/全国疫情地区查询最新
  • 企业网站的切片怎么做/百度小说排行榜完本
  • wordpress js篡改/百度推广优化
  • 深圳建工集团/seo外链推广工具下载
  • 西安网站搭建建设定制/谷歌商店官网下载
  • 杨浦做网站/seo自媒体培训