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

如何使用awk(或其他工具)连续读取3行提取LAST ITERATION后全部数值?

问题说明

待处理大文件存在如下格式的内容片段:

Bla bla bla
LAST ITERATION:        1780           6          12  0.689655172413793
  -8708.81862246834       -8698.33572943212       -2003.09638506407
 -9.912281246897692E-003
Bla bla bla

需要提取LAST ITERATION:之后的所有数值,整合为单行写入输出文件。
原有awk命令仅能获取前两行的对应数值,无法读取第三行的目标值:

awk 'a && NR==n{ print a,b,c,d,$1,$3 } /LAST ITERATION:/{ a=$3; b=$4; c=$5; d=$6; n=NR+1 }' ./$FOLDER/$NAMEDATA >> $NAMEOUTPUT
可行方案

原逻辑仅匹配了标记行的下1行(行号为NR+1),遗漏了后续第二行的数值,调整awk逻辑,匹配到标记行后连续读取后续两行的字段,拼接完成后统一输出即可:

awk '
/LAST ITERATION:/ {
    # 存储标记行自带的4个数值
    line = $3 " " $4 " " $5 " " $6
    # 读取下一行,追加3个数值
    getline
    line = line " " $1 " " $2 " " $3
    # 读取第三行,追加最后1个数值
    getline
    line = line " " $1
    # 输出拼接完成的单行结果
    print line
}
' ./$FOLDER/$NAMEDATA >> $NAMEOUTPUT

如果文件中存在多组LAST ITERATION:内容块,该命令可批量处理,每组对应输出一行整合后的数值。如果后续行的数值数量和示例有差异,对应调整getline后的字段拼接规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:12:21