使用jq从JSON文件中提取key@value格式的键值对
jq命令错误排查与修正
问题原因
你编写的jq命令存在语法错误:jq的双引号字符串中插入变量/表达式需要使用\()格式的插值语法,你原命令直接用()包裹变量,会被识别为普通字符输出,无法拿到变量的实际值。
修正后命令
按字母排序输出子键
keys会默认将THINGS下的子键按字母排序后输出:
jq -r '.THINGS | keys[] as $k | "\($k)@\(.[$k].revision)"' things.json
执行后输出:
THING_1@dsfkes4s34jlis4jsj4lis4sli3 THING_2@dsfkes4s34jlis4jsj4lis4sli3
保留JSON原始子键顺序输出
如果不需要对输出的键按字母排序,要和JSON中THINGS字段下的子键顺序保持一致,将keys替换为keys_unsorted即可:
jq -r '.THINGS | keys_unsorted[] as $k | "\($k)@\(.[$k].revision)"' things.json
执行后输出:
THING_2@dsfkes4s34jlis4jsj4lis4sli3 THING_1@dsfkes4s34jlis4jsj4lis4sli3
内容的提问来源于stack exchange,提问作者Duma Alex
相关产品推荐
相关产品推荐

