使用jq将JSON转换为自定义非JSON格式的TABLE条目实现问题
jq 实现 JSON 转自定义格式文本方案
你可以直接使用以下完整 jq 脚本实现所有需求,不需要额外配合 shell 逻辑:
jq -r ' .result[] | # 输出头部固定行 "COMMENT|\(.name)|\(.dbno)", "SPOT|addr|\\@lbl|\(.address | join("|"))", # 遍历所有segment,输出TABLE行后加分隔符 (.segments[] | (.lines[].products[] | "TABLE|\(.name)|\(.qty)|\(.price_ea)|\(.extended)"), "BREAK"), # 输出尾部行 "FLUSH" ' 你的输入文件路径
逻辑说明
- 直接用
.result[]遍历result数组所有元素,不需要额外通过key索引取值,语法更简洁 - 脚本里逗号分隔的多个字符串,jq会按顺序逐行输出,天然匹配你要的行顺序
- 处理segments时,会先展开当前segment下所有lines的所有products,按原顺序生成TABLE行,每个segment处理完成后自动输出BREAK分隔符,完全符合你的分隔规则
- 加
-r参数是为了让jq输出原始文本,不会给结果额外加引号
用你提供的样例JSON执行该脚本,输出结果和你给出的目标格式完全一致。
内容的提问来源于stack exchange,提问作者dksayers
相关产品推荐
相关产品推荐

