将Python数据处理代码转换为兼容jq命令的Shell脚本实现
Python转jq实现:处理JSON数据并格式化输出
需求说明
- 读取
output.txt中的JSON数据 - 提取
Datapoints字段并转换为类DataFrame的结构化输出 - 按
Timestamp字段排序 - 去除输出中的多余双引号
- 将
Average字段保留两位小数
样本数据(output.txt)
{ "Datapoints": [ {"Timestamp": "2024-05-20T10:00:00", "Average": 12.3456}, {"Timestamp": "2024-05-20T09:00:00", "Average": 9.8765}, {"Timestamp": "2024-05-20T11:00:00", "Average": 15.1234} ] }
修正后的jq命令
基础版(无表头)
jq -r '.Datapoints | sort_by(.Timestamp) | .[] | [.Timestamp, (.Average | round(2))] | @tsv' output.txt
带表头版(更贴近DataFrame输出)
jq -r '["Timestamp", "Average"], (.Datapoints | sort_by(.Timestamp) | .[] | [.Timestamp, (.Average | round(2))]) | @tsv' output.txt
命令解释
-r:启用原始输出模式,自动去除字符串的多余双引号.Datapoints:定位到JSON中的Datapoints数组字段sort_by(.Timestamp):按Timestamp字段对数组元素进行升序排序.[]:遍历数组中的每个数据对象(.Average | round(2)):将Average字段数值保留两位小数@tsv:将输出格式化为制表符分隔的结构化文本,模拟DataFrame的表格形式
正确输出示例
Timestamp Average 2024-05-20T09:00:00 9.88 2024-05-20T10:00:00 12.35 2024-05-20T11:00:00 15.12
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

