Lumesh 解析函数使用文档
函数概览
函数组 |
函数名 |
调用格式 |
功能描述 |
数据解析 |
json |
parse.json json_str |
解析JSON字符串为Lumesh数据结构 |
数据解析 |
toml |
parse.toml toml_str |
解析TOML字符串为Lumesh数据结构 |
数据解析 |
csv |
parse.csv csv_str |
解析CSV字符串为Lumesh数据结构 |
代码解析 |
expr |
parse.expr lumesh_code |
解析Lumesh代码字符串为可执行表达式 |
命令解析 |
cmd |
parse.cmd [headers...] output |
将命令行输出解析为结构化数据 |
数据序列化 |
to_json |
parse.to_json expr |
序列化Lumesh数据结构为JSON字符串 |
数据序列化 |
to_toml |
parse.to_toml expr |
序列化Lumesh数据结构为TOML字符串 |
数据序列化 |
to_csv |
parse.to_csv expr |
序列化Lumesh数据结构为CSV字符串 |
json查询 |
jq |
parse.jq json_str |
常用json查询,支持管道,属性,索引,select |
详细说明与示例
1. parse.toml
参数:
toml_str
:字符串类型,包含有效的TOML内容
输出示例:
parse.toml "name = 'Alice'\nage = 30"
+---------------------+ | KEY VALUE | +=====================+ | name "Alice" | | age 30 | +---------------------+
|
已经转为表达式的,可以使用parse.to_toml
转回为字符串。
2. parse.json
参数:
json_str
:字符串类型,包含有效的JSON内容
嵌套结构输出:
parse.json '{"name":"Alice","hobbies":["reading","swimming"]}'
parse.json "{\"name\":\"Alice\",\"hobbies\":[\"reading\",\"swimming\"]}"
+---------------------------------+ | KEY VALUE | +=================================+ | age 30 | | hobbies ┌─────────┬──────────┐ | | │ reading │ swimming │ | | └─────────┴──────────┘ | | name "Alice" | +---------------------------------+
|
已经转为表达式的,可以使用parse.to_json
转回为字符串。
3. parse.csv
参数:
嵌套结构输出:
parse.csv "Product Name,Category,Price,Stock Laptop,Electronics,999.99,50 Smartphone,Electronics,499.99,150 Desk Chair,Furniture,89.99,75 Coffee Maker,Appliances,29.99,200 Notebook,Stationery,2.99,500 "
+------------------------------------------+ | CATEGORY PRICE PRODUCT NAME STOCK | +==========================================+ | Electronics 999.99 Laptop 50 | | Electronics 499.99 Smartphone 150 | | Furniture 89.99 Desk Chair 75 | | Appliances 29.99 Coffee Maker 200 | | Stationery 2.99 Notebook 500 | +------------------------------------------+
|
已经转为表达式的,可以使用parse.to_csv
转回为字符串。
4. parse.expr
参数:
lumesh_code
:字符串类型,包含有效的Lumesh语法
动态代码执行:
let code = "x -> math.max(x, 5)" let action = parse.expr(code) action(2)
|
5. parse.cmd
参数模式:
模式 |
示例 |
说明 |
自动检测 |
parse.cmd output |
智能识别表头和数据行 |
列表表头 |
parse.cmd [h1, h2] output |
指定表头列表 |
多参数 |
parse.cmd h1 h2 ... output |
直接指定多个表头 |
表格输出示例:
parse.cmd(["ID", "NAME", "AGE"], "1 Alice 30\n2 Bob 25")
+------------------------------+ | ID NAME AGE | +==============================+ | 1 "Alice" 30 | | 2 "Bob" 25 | +------------------------------+
|
复杂结构输出:
parse.cmd "ITEM QTY PRICE Apple 10 2.5 Banana 5 1.8"
+---------------------------------+ | ITEM QTY PRICE | +=================================+ | Apple 10 2.5 | | Banana 5 1.8 | +---------------------------------+
|
5. parse.jq
参数:
query_str
:字符串类型,包含有效的JSON查询,支持管道,属性,索引,select
管道符:|
属性访问: .name
通配符:.[]
返回整个数组
select语句支持基本比较操作符:>, <, >=, <=, ==, !=
json_str
:字符串类型,包含有效的JSON内容
let a = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
parse.jq '[0]|.name' a parse.jq 'select(.age>28)' a
|
特殊场景处理
预结构化数据识别
parse.cmd "1, 2, 3"
+-------------+ | C0 C1 C2 | +=============+ | 1, 2, 3 | +-------------+
|
表头自动转换
parse.cmd "CPU% MEM(MB) MAJ:MIN\n50 1024 259:0"
+-----------------------+ | CPU% MAJ_MIN MEM_MB | +=======================+ | 50 259:0 1024 | +-----------------------+
|
空输入处理
parse.toml "" ; => none parse.cmd "" ; => [] (空列表)
+------------+ | KEY VALUE | +============+ +------------+
|
最佳实践
parse.cmd
一般用于将系统命令的结果从字符串转为结构化表格。
ps aux | head -n4 | parse.cmd()
+-------------------------------------------------------------------------------------+ | %CPU %MEM COMMAND PID RSS START STAT TIME TTY USER VSZ | +=====================================================================================+ | 0.0 0.0 /sbin/init 1 1932 09:05 S 0:00 ? root 2608 | | 0.0 0.0 [kthreadd] 2 0 09:05 S 0:00 ? root 0 | | 0.0 0.0 [pool_workqueue_release] 3 0 09:05 S 0:00 ? root 0 | +-------------------------------------------------------------------------------------+
|
parse.cmd
往往结合where
和select
语句使用。
ps aux | parse.cmd() | where(COMMAND ~: "lume") | select "%CPU" COMMAND RSS
+----------------------------------+ | %CPU COMMAND RSS | +==================================+ | 0.0 ./target/debug/lume 10476 | | 0.0 ./target/debug/lume 12148 | +----------------------------------+
|
- lumesh 自带的模块命令无须parse.cmd转换,可以直接使用
where
和select
fs.ls -l -k | where(size > 8)
+---------------------------------------------------------------+ | MODE MODIFIED NAME SIZE TYPE | +===============================================================+ | 420 2025-06-01 06:12:18.911115732 Cargo.lock 47 file | | 420 2025-05-30 10:26:40.122231239 CHANGELOG.md 10 file | +---------------------------------------------------------------+
|