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

如何在Unix中通过嵌套循环读取文件并提取指定版本日志

提取指定版本对应的日志内容

我来帮你快速实现这个需求!针对从revisions.txt读取版本号,再从logs.txt提取对应日志的场景,这里有几个实用的命令行工具方案:

方法1:用grep(最简单直接)

grep的-f参数可以直接从文件读取要匹配的模式,再结合-F把版本号当作固定字符串(避免正则表达式的意外匹配),命令如下:

首先如果你的revisions.txt里版本号是空格分隔(比如例子里的APP-1001 APP-1002 APP-1004),先把它转换成每行一个版本号:

tr ' ' '\n' < revisions.txt > revisions_clean.txt

然后执行匹配:

grep -Ff revisions_clean.txt logs.txt

效果说明

针对你给出的示例内容,执行后会输出:

APP-1001 : Bug Fix for XYZ issues
APP-1002 : Bug Fix for XYZ issues
APP-1004 : Bug Fix for XYZ issues

方法2:用awk(更灵活,适合复杂格式)

如果日志格式可能有变化,或者你需要做更多自定义处理,awk是更好的选择。它可以先把所有版本号存入数组,再逐行检查日志:

同样先处理revisions.txt成每行一个版本号(如果是空格分隔的话),然后执行:

awk 'NR==FNR { rev[$0]; next } $1 in rev' revisions_clean.txt logs.txt

命令解释

  • NR==FNR:当处理第一个文件(revisions_clean.txt)时,把每个版本号作为键存入数组rev
  • next:跳过后续逻辑,继续处理下一行
  • $1 in rev:处理第二个文件(logs.txt)时,检查每行第一个字段是否在rev数组中,如果是就打印整行

额外提示

如果你的revisions.txt本来就是每行一个版本号,那可以跳过tr转换的步骤,直接用原文件执行命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:51