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

如何将终端输出的Split and merge outputs parallel格式数据转换为符号与ID映射格式

如何将终端输出的Split and merge outputs parallel格式数据转换为符号与ID映射格式

我明白你的需求啦——把终端里这种用|分隔的键值对数据,转换成Symbol = ID的映射格式对吧?下面给你几个简单好用的方案,不管是想在终端快速处理,还是写个小脚本复用都能搞定:

方案一:用Awk命令行工具快速处理

如果你只想在终端里一次性处理,Awk是最方便的选择,一行命令就能搞定:

echo "55=22395|1007=BTCUSD|1008=3|55=22396|1007=BTCEUR|1008=2|55=22397|1007=ETHUSD|1008=3|55=22398|1007=ETHEUR|1008=3|55=20009|1007=TELENET GROUP|1008=2|55=20011|1007=MAGNEGAS CORP|1008=2|55=20012|1007=CALUMET SPEC PRDCTS|1008=2|55=20013|1007=CBOE HLDG INC|1008=2|55=20014|1007=ELECTRONIC ARTS INC|1008=2|55=20015|1007=EXPRESS SCRIPTS INC|1008=2|55=20016|1007=ADVANCE AUTO PARTS|1008=2|55=20017|1007=CHINA FUND INC|" | awk -F'|' '{for(i=1;i<=NF;i++){split($i,a,"=");if(a[1]=="55")id=a[2];if(a[1]=="1007")sym=a[2];if(id && sym){print sym" = "id;id="";sym=""}}}'

命令逻辑说明:

  • 用|作为字段分隔符,把整行数据拆成单个键值对
  • 遍历每个键值对,用=拆分出键和值
  • 遇到55就记录对应的ID,遇到1007就记录对应的符号
  • 当同时拿到ID和符号时,输出符号 = ID的格式,然后清空变量处理下一组

如果你的数据是来自某个命令的输出,直接把echo "..."换成那个命令就行,比如:

your-terminal-command | awk -F'|' '{for(i=1;i<=NF;i++){split($i,a,"=");if(a[1]=="55")id=a[2];if(a[1]=="1007")sym=a[2];if(id && sym){print sym" = "id;id="";sym=""}}}'

方案二:用Python脚本灵活处理

如果需要复用逻辑,或者要把结果保存成文件,写个Python小脚本更合适:

# 替换成你的原始数据,或者从终端读取输入
raw_data = "55=22395|1007=BTCUSD|1008=3|55=22396|1007=BTCEUR|1008=2|55=22397|1007=ETHUSD|1008=3|55=22398|1007=ETHEUR|1008=3|55=20009|1007=TELENET GROUP|1008=2|55=20011|1007=MAGNEGAS CORP|1008=2|55=20012|1007=CALUMET SPEC PRDCTS|1008=2|55=20013|1007=CBOE HLDG INC|1008=2|55=20014|1007=ELECTRONIC ARTS INC|1008=2|55=20015|1007=EXPRESS SCRIPTS INC|1008=2|55=20016|1007=ADVANCE AUTO PARTS|1008=2|55=20017|1007=CHINA FUND INC|"

# 拆分数据并过滤空项
key_value_pairs = [pair for pair in raw_data.split('|') if pair]

symbol_id_map = {}
current_id = None

for pair in key_value_pairs:
    key, value = pair.split('=')
    if key == '55':
        current_id = value
    elif key == '1007' and current_id is not None:
        # 保存映射关系
        symbol_id_map[value] = current_id
        current_id = None  # 重置ID,准备处理下一组

# 输出结果
for symbol, id_num in symbol_id_map.items():
    print(f"{symbol} = {id_num}")

# 如果需要保存到文件,添加下面的代码
# with open('symbol_id_mapping.txt', 'w') as f:
#     for symbol, id_num in symbol_id_map.items():
#         f.write(f"{symbol} = {id_num}\n")

脚本逻辑说明:

  • 先把原始数据按|拆分,过滤掉末尾的空字符串
  • 遍历每个键值对,临时存储当前ID,遇到符号时把映射存入字典
  • 最后遍历字典输出格式,还可以轻松扩展保存到文件的功能

如果要从终端读取输入(比如管道传递数据),可以把raw_data的赋值改成:

import sys
raw_data = sys.stdin.read()

然后用命令行执行:

your-terminal-command | python your-script-name.py

备注:内容来源于stack exchange,提问作者Ömer Cerrahpaşa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:19:32