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

使用awk筛选满足条件的igroup行第三列内容

用AWK提取符合条件的Igroup名称

需求说明

提取所有满足以下条件的Igroup名称(即包含"Igroup"行的第三列):该行之后到下一个"Igroup"行之间的所有行,必须全部包含"not logged in"字符串;若中间存在任何一行包含"logged in",则该Igroup不输出。

示例输入

Igroup Name: asdfgsrhqms103
00:00:00:00:00:00:3f:30 (not logged in)
00:00:00:00:00:00:3f:32 (not logged in)
Igroup Name: asdfgs012
00:00:00:00:00:00:53:20 (logged in)
00:00:00:00:00:00:fb:1a (logged in)
Igroup Name: asdfgs013
00:00:00:00:00:00:52:98 (not logged in)
00:00:00:00:00:00:fa:ec (logged in)
00:00:00:00:00:00:fb:1c (logged in)

AWK解决方案

/Igroup Name:/ {
    if (prev_igroup && valid) {
        print prev_igroup
    }
    prev_igroup = $3
    valid = 1
    next
}
valid {
    if (/logged in/) {
        valid = 0
    }
}
END {
    if (prev_igroup && valid) {
        print prev_igroup
    }
}

脚本工作原理

  1. 匹配Igroup行:
    • 当遇到以Igroup Name:开头的行时,先检查上一个记录的Igroup是否有效(valid=1),若是则输出该Igroup名称。
    • 然后将当前行的第三列(即Igroup名称)存入prev_igroup,并初始化valid为1(默认当前Igroup有效)。
  2. 检查后续行:
    • 对于非Igroup的行,若当前有正在验证的Igroup(valid为1),则检查该行是否包含logged in,若是则将valid设为0(标记该Igroup无效)。
  3. 处理文件末尾:
    • 脚本结束时,检查最后一个Igroup的状态,若有效则输出其名称。

运行方式

将上述脚本保存为filter_igroup.awk,然后执行:

awk -f filter_igroup.awk input.txt

或直接在命令行运行:

awk '/Igroup Name:/ {if (prev_igroup && valid) print prev_igroup; prev_igroup=$3; valid=1; next} valid {if (/logged in/) valid=0} END {if (prev_igroup && valid) print prev_igroup}' input.txt

输出结果

asdfgsrhqms103

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:33:28