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

编写Shell脚本将XTREMIO存储卷多段键值对转换为分号分隔单行

解决XTREMIO存储卷信息转分号分隔单行记录的Shell脚本

这里有一个基于awk的Shell脚本,专门处理你描述的场景——把多段键值对格式的XTREMIO存储卷信息,转换成指定格式的分号分隔单行记录:

脚本代码

#!/bin/bash

# 处理XTREMIO存储卷信息,转换为分号分隔的单行记录
awk '
BEGIN {
    # 定义需要提取的字段,以及输出顺序
    fields["Type"] = ""
    fields["UID"] = ""
    fields["Vendor"] = ""
    fields["Product"] = ""
    fields["Size"] = ""
    fields["Name"] = ""
    fields["Array Serial"] = ""
    # 固定输出顺序,和示例格式对齐
    split("Type,UID,Vendor,Product,Size,Name,Array Serial", order_arr, ",")
}

# 处理非空行,提取键值对
/./ {
    split($0, kv, ": ")  # 按": "分割键和值,确保匹配字段格式
    key = kv[1]
    value = kv[2]
    if (key in fields) {
        fields[key] = value
    }
}

# 遇到空行(段落结束),输出当前记录并重置字段
!/./ {
    # 按预设顺序拼接字段
    output = ""
    for (i=1; i<=length(order_arr); i++) {
        key = order_arr[i]
        output = output (output == "" ? "" : ";") fields[key]
    }
    print output
    # 重置字段,准备处理下一段
    for (key in fields) {
        fields[key] = ""
    }
}

# 处理文件末尾的最后一段(避免因无空行丢失记录)
END {
    output = ""
    for (i=1; i<=length(order_arr); i++) {
        key = order_arr[i]
        output = output (output == "" ? "" : ";") fields[key]
    }
    if (output != "") print output
}
' "$1"

使用步骤

  1. 将上述代码保存为 convert_xtremio.sh
  2. 给脚本添加执行权限:
    chmod +x convert_xtremio.sh
    
  3. 运行脚本,传入你的输入文件路径,输出可以重定向到新文件:
    ./convert_xtremio.sh your_input_file.txt > formatted_output.txt
    

示例说明

输入示例(片段)

Type: XTREMIO
UID: 51,4f,0c,51,9d,00,05,28
Vendor: XtremIO
Product: XtremApp
Size: 5.00 GB
Name: test_rep
Array Serial: CKM00150400153

Type: XTREMIO
UID: aa,bb,cc,dd,ee,ff,00,11
Vendor: XtremIO
Product: XtremApp
Size: 10.00 GB
Name: prod_vol
Array Serial: CKM00150400154

输出示例

XTREMIO;51,4f,0c,51,9d,00,05,28;XtremIO;XtremApp;5.00 GB;test_rep;CKM00150400153
XTREMIO;aa,bb,cc,dd,ee,ff,00,11;XtremIO;XtremApp;10.00 GB;prod_vol;CKM00150400154

注意事项

  • 确保输入文件中每个字段的分隔符是 : (冒号+空格),如果你的文件格式有差异,修改split($0, kv, ": ")中的分隔符即可。
  • 如果某段记录缺失某个字段,输出中对应位置会是空字符串(比如XTREMIO;;;;test_vol;CKM00150400153),如果需要填充默认值,可以在拼接时添加判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:37:54