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

如何使用awk移除指定字段冗余内容 提取首个gres/gpu后的数值

awk提取AllocTres字段GPU值实现

测试文件准备

执行vi test.text创建测试文件,文件共3列,由前置awk管道生成,存在空字段,内容如下:

Index  AllocTres                              CPUTotal
1      cpu=1,mem=256G                         18
2      cpu=2,mem=1024M                        16
3                                             4
4      cpu=12,gres/gpu=3                      12
5                                             8
6                                             9
7      cpu=13,gres/gpu=4,gres/gpu:ret6000=2   20
8      mem=12G,gres/gpu=3,gres/gpu:1080ti=1   21

处理规则

  • 过滤第二列(AllocTres)中所有cpu=、mem=开头的键值对
  • 仅保留第一个无后缀的gres/gpu=后跟随的数值,其余带冒号后缀的GPU相关条目全部丢弃
  • 原空字段保留空值,输出3列的对齐格式和原文件保持一致

实现命令

直接运行如下管道命令即可得到结果:

cat test.text | awk '
# 首行表头直接原样输出
NR==1 {print; next}
{
    gpu_num = ""
    # 正则匹配第一个gres/gpu=后的整数,自动忽略带冒号的后缀条目
    if (match($0, /gres\/gpu=([0-9]+)/, match_res)) {
        gpu_num = match_res[1]
    }
    # 按原列宽格式化输出,%-Ns的N对应列占位宽度,可根据实际文件调整
    printf "%-6s %-38s %s\n", $1, gpu_num, $NF
}'

输出结果

执行后输出和预期完全一致:

Index  AllocTres                              CPUTotal
1                                             18
2                                             16
3                                             4
4      3                                      12
5                                             8
6                                             9
7      4                                      20
8      3                                      21

如果实际文件的列宽和示例不同,调整printf语句中%-38s的数字即可,数字越大第二列占位越宽。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:45:49