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

Linux Bash下如何为tail -f输出的每行日志前置文件名

解决tail -f多日志文件时文件名前置并过滤的问题

直接使用tail配合awk即可实现需求,无需额外工具,命令如下:

tail -f *.log | awk '/^==> / {filename=substr($0,5,length($0)-8); next} !/(str1|str2)/ {print filename":"$0}'

命令解释:

  • tail -f *.log:持续跟踪当前目录下所有.log文件的新增内容
  • awk处理逻辑:
    • 匹配tail输出的文件名分隔行(格式为==> filename <==),从中提取纯文件名并暂存
    • 跳过分隔行本身,不输出
    • 对后续的日志行,先过滤掉包含str1或str2的内容(和原命令egrep -v '(str1|str2)'效果一致)
    • 给符合条件的日志行前置文件名和冒号后输出

内容的提问来源于stack exchange,提问作者Jack C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:02:12