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

如何从多行命令输出中提取指定键值对并关联块名称?

提取分区名称与指定键值对的方法

针对你给出的scontrol show partition类输出格式,要提取每个分区名称与指定键的键值对组合,推荐用以下两种方法:

方法一:使用awk(更直观易维护)

awk适合处理这种分块的文本结构,只需指定目标键即可输出对应结果。比如要提取key4的键值对:

awk -v target_key="key4" '
/^Name=/ { name = substr($0, 6) }
/^\s+/ {
    for (i=1; i<=NF; i++) {
        split($i, kv, "=")
        if (kv[1] == target_key) {
            print name ": " $i
        }
    }
}' input.txt

如果要提取key3,只需要将target_key="key4"替换为target_key="key3"即可。

原理说明:

  • 匹配Name=开头的行,截取等号后的分区名称保存
  • 匹配缩进的键值对行,遍历行内每个键值对字段,拆分键和值,当键与目标键一致时,输出名称+键值对

方法二:使用sed

如果偏好sed,也可以通过多行处理实现需求,比如提取key4:

sed -n '
/^Name=/ {
    s/Name=//
    h
}
/^\s.*key4=/ {
    s/^\s*//
    s/.*\(key4=[^ ]*\).*/\1/
    G
    s/\(.*\)\n\(.*\)/\2: \1/
    p
}' input.txt

原理说明:

  • 匹配Name=行,移除Name=前缀后,将名称存入保持空间
  • 匹配包含key4的缩进行,移除开头空格并提取key4=xxx部分,再取出保持空间的名称,拼接成目标格式输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:32:44