我有这样的json文件:
{
"abc": "A",
"abc-release": "B",
"bcd":"C",
"cde-release":"D",
"cde":"E"
}
并希望得到这样的结果文件:
{
"abc": "B",
"bcd":"C",
"cde":"D"
}
那是:
需要通过使用Linux命令(例如jq
和)来完成这项工作sed
。最好是与管道一起使用。
我花了多个小时尝试实现这一点,最好的办法就是执行此jq命令,该命令返回需要删除的键数组。
jq "with_entries(select(.key|endswith(\"-release\"))) | keys | map(split(\"-\")[0])"
[
"abc",
"cde"
]
但是,如何以jqdel
方法或其他某种方式喂入此数组以获得所需的结果呢?
第二步(重新命名元素)很容易。这可以通过jq完成,也可以在最后仅通过sed完成:
// simply like this
sed 's/-release//'
// or
sed 's/(.*)-release/$1/'
以下使用jq的构造解决方案具有简单高效的优点:
. as $in
| reduce (keys_unsorted[] | select(endswith("-release")|not)) as $k ({};
. + {($k) : (($k + "-release") as $kr
| $in
| if has($kr) then .[$kr] else .[$k] end) } )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句