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

求筛选运行时长超6分钟K8s Pod的正则表达式

筛选AGE大于6分钟的Pod的正确Awk写法

你的原有Awk命令awk '$NF !~ /[0-6][ms]/ { print }' file.txt逻辑存在漏洞,无法正确排除秒级和0-6分钟的Pod,原因是:

  • 正则仅排除以0-6开头且单位为m/s的AGE,但像125s这类开头数字不在0-6范围内的秒级记录会被错误保留(实际125s仅约2分钟)
  • 未区分时间单位的实际时长,判断逻辑不严谨

正确的Awk命令

NR==1 {print; next}
{
    age = $NF
    value = substr(age, 1, length(age)-1)
    unit = substr(age, length(age))
    if ((unit == "m" && value > 6) || unit ~ /[hd]/) {
        print
    }
}

命令逻辑说明

  1. 先打印表头行(NR==1表示第一行)
  2. 对每一行数据,拆分AGE字段的数值和单位:
    • value提取AGE中的数字部分
    • unit提取末尾的时间单位(m/s/h/d等)
  3. 判断条件:
    • 若单位是分钟(m),仅保留数值大于6的记录
    • 若单位是小时(h)、天(d)等更大的单位,直接保留(这类时长必然超过6分钟)
    • 秒级(s)记录全部排除(即使是360s也仅等于6分钟,不符合"大于"要求)

执行结果

用你的测试文件执行上述命令,输出符合预期:

NAMESPACE      NAME               READY   STATUS             RESTARTS        AGE
util           tomcat-1           0/1     Running            0               38m
util           tomcat-2           0/1     Running            0               15m
util           tomcat-3           0/1     Running            0               7m

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:50:00