Json 使用jq修改对象数组中的同一字段
我有一个对象数组,其中每个对象的结构如下:Json 使用jq修改对象数组中的同一字段,json,jq,edit,Json,Jq,Edit,我有一个对象数组,其中每个对象的结构如下: { "impl": "pmdk", "pc_writes": 50, "threads": 1, "throughput (K tps)": 703014, "med_latency (ns)": 1334, "99_latency (ns)": 2358, "
{
"impl": "pmdk",
"pc_writes": 50,
"threads": 1,
"throughput (K tps)": 703014,
"med_latency (ns)": 1334,
"99_latency (ns)": 2358,
"exec_time (s)": 14224471006
}
我想将每个对象中的吞吐量K tps字段除以1000,并以相同的格式返回数组。我尝试通过以下方式使用map_值:
map_values(."throughput (K tps)"/1000)
但它只返回一个修改值数组,如下所示:
[703.014,...]
而不是整个对象,如下所示:
[{
"impl": "pmdk",
"pc_writes": 50,
"threads": 1,
"throughput (K tps)": 703.014,
"med_latency (ns)": 1334,
"99_latency (ns)": 2358,
"exec_time (s)": 14224471006
},
...
]
在将一个字段除以1000后,如何返回一个对象数组
jq '.[] | ."throughput (K tps)" |= . / 1000'
应通过将其除以1000来编辑每个吞吐量K tps
应通过将其除以1000来编辑每个吞吐量K tps
告诉jq将吞吐量K tps中的值除以1000:
jq '.[]."throughput (K tps)" |= . / 1000' file.json
告诉jq将吞吐量K tps中的值除以1000:
jq '.[]."throughput (K tps)" |= . / 1000' file.json
您可以使用map或map_值来解决问题。但您尝试的问题是,您只是修改了用于打印到输出的现场吞吐量K tps
如果没有|=update赋值运算符,则只有表达式中提到的字段才会打印到控制台
您可以使用运算符
但是jq为您提供了更多的表单+=、*=和/=,因此您可以
map(."throughput (K tps)" /= 1000)
您可以使用map或map_值来解决问题。但您尝试的问题是,您只是修改了用于打印到输出的现场吞吐量K tps
如果没有|=update赋值运算符,则只有表达式中提到的字段才会打印到控制台
您可以使用运算符
但是jq为您提供了更多的表单+=、*=和/=,因此您可以
map(."throughput (K tps)" /= 1000)