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

如何解析文本文件中按冒号分隔的块参数?

处理冒号分隔文本行的参数提取方案

示例数据

WoodBlock : 0.886275, 0.607843, 0.25098 : 2, 2, 2 : true : -75.5656891, -11.899992, -416.506866, 1, 0, 0, 0, 1, 0, 0, 0, 1 : 0, 0, 0 : 0, 0, 0

RustedBlock : 0.639216, 0.635294, 0.647059 : 2, 2, 2 : true : -35.5656891, -11.899992, -424.506866, 1, 0, 0, 0, 1, 0, 0, 0, 1 : 0, 0, 0 : 0, 0, 0

StoneBlock : 0.639216, 0.635294, 0.647059 : 2, 2, 2 : true : -50.5656891, -11.899992, -425.506866, 1, 0, 0, 0, 1, 0, 0, 0, 1 : 0, 0, 0 : 0, 0, 0

MetalRod : 0.388235, 0.372549, 0.384314 : 1, 3, 1 : true : -51.5656891, -11.399992, -412.506866, 1, 0, 0, 0, 1, 0, 0, 0, 1 : 0, 0, 0 : 0, 0, 0

解决方案

针对选中第一行、提取并处理指定位置参数的需求,推荐两种实现方式:

1. Ruby 脚本实现(适合编程场景)

gsub更适合文本替换,提取参数用split配合行选择更直接:

# 读取文件,过滤空行后取第一行
first_line = File.readlines('blocks.txt').reject(&:empty?).first

# 按冒号分割,同时去除每个参数首尾的空格
params = first_line.split(':').map(&:strip)

# 提取并处理第2个参数(RGB值)
rgb_values = params[1].split(',').map(&:strip).map(&:to_f)
puts "处理后的RGB: #{rgb_values}"

# 提取并处理第3个参数(尺寸)
dimensions = params[2].split(',').map(&:strip).map(&:to_i)
puts "处理后的尺寸: #{dimensions}"

# 提取并处理第4个参数(布尔状态)
is_active = params[3] == 'true'
puts "激活状态: #{is_active}"

# 提取并处理第5个参数(位置与变换矩阵)
transform_data = params[4].split(',').map(&:strip).map(&:to_f)
puts "变换参数: #{transform_data}"

2. Awk 命令实现(适合命令行快速处理)

如果不需要编写脚本,用awk可以直接在命令行提取指定参数:

# 提取第一行第2个参数(RGB值)
awk 'NF>0 && NR==1 {split($0, arr, /\s*:\s*/); print arr[2]}' blocks.txt

# 提取第一行第3个参数(尺寸)
awk 'NF>0 && NR==1 {split($0, arr, /\s*:\s*/); print arr[3]}' blocks.txt
  • NF>0:跳过文件中的空行
  • NR==1:仅选中第一行
  • split($0, arr, /\s*:\s*/):用冒号分割行内容,自动忽略冒号前后的空格,结果存入数组arr
  • 数组索引从1开始,arr[1]是块名称,arr[2]对应第二个参数,以此类推

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:15