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

如何将两条MegaCli命令输出按虚拟磁盘编号匹配合并?

合并MegaRAID虚拟磁盘信息与对应物理盘ID的方法

解决方案

可以用awk一次性处理原始命令输出,直接将每个虚拟磁盘的基础信息和对应的物理盘ID行合并,无需分开执行两次命令:

sudo /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -a0 | awk '
BEGIN { RS=""; ORS="\n\n" }
{
    # 提取虚拟磁盘编号
    match($0, /Virtual_Disk([0-9]+)/, vd_match)
    vd_number = vd_match[1]
    
    # 打印当前虚拟磁盘的基础信息
    print $0
    
    # 提取所有Slot Number的ID并格式化
    drive_ids = ""
    temp_line = $0
    while (match(temp_line, /Slot Number:\s+([0-9]+)/, slot_match)) {
        drive_ids = drive_ids " " slot_match[1] ","
        temp_line = substr(temp_line, RSTART + RLENGTH)
    }
    
    # 打印对应格式的物理盘ID行
    print "Virtual Drive: " vd_number " Physical Drives ids:" drive_ids
}'

工作原理

  1. 用RS=""将原始输出按空行分割为每个虚拟磁盘的独立信息块,保证处理单位是单个虚拟磁盘的所有数据
  2. 从每个块中提取Virtual_Disk后的编号,确保和目标输出的Virtual Drive编号完全匹配
  3. 先输出原始的基础信息(RAID级别、状态、磁盘数量等)
  4. 遍历当前块中的所有Slot Number,提取磁盘ID并拼接成指定格式
  5. 输出对应编号的物理盘ID行,并用ORS="\n\n"保证合并后的每个虚拟磁盘信息块之间保留空行分隔

原有命令无效原因

你之前的命令是先完整输出所有虚拟磁盘的基础信息,再输出所有物理盘ID行,只是简单的顺序拼接,没有将每个虚拟磁盘的信息对应关联,所以会出现所有基础信息在前、所有ID行在后的错位情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:27:16