gpt4 book ai didi

json - 在Bash中使用jq按对象属性值的长度降序对它们进行排序

转载 作者:行者123 更新时间:2023-12-03 13:44:34 25 4
gpt4 key购买 nike

我有以下JSON代码段:

{
"root_path": "/www",
"core_path": "/www/wp",
"content_path": "/www/content",
"vendor_path": "/www/vendor"
}

我想先使用 jq来获得按长度降序排序的值:
/www/content
/www/vendor
/www/wp
/www

我需要这些文件,以便可以与文件列表进行匹配,以查找文件存在于哪些命名路径中。

然后,我想再次使用 jq将属性交换为值(它可以删除重复的属性,没关系):
{
"/www": "root_path".
"/www/wp": "core_path",
"/www/content": "content_path",
"/www/vendor": "vendor_path"
}

我第二个查询的用例是能够查找匹配的路径值并找到其路径名,然后将其用于具有相同架构的第二个JSON代码片段中,以获取命名路径的值。

我的用例是用于网站部署,我有一个配置文件,其中包含文件名,因为它们将存在于部署服务器上,应该从源服务器复制到部署服务器,但是服务器可能具有不同的目录布局。

我需要为此使用Bash,但是如果有更好的方法来做我想做的事情,我会开放的。也就是说,我确实确实想学习如何更好地使用 jq,所以我更愿意学习如何使用 jq进行这些转换。

我正在使用 jq版本 1.5

最佳答案

the values sorted in descending order of length:


[.[]] | sort_by(length) | reverse[]

swap properties for values


with_entries(.key as $k | .key=.value | .value=$k )

结合两个要求

可以通过组合以上两种解决方案来制定组合问题的解决方案,因为 with_entriesto_entriesfrom_entries的组合:
to_entries
| map(.key as $k | .key=.value | .value=$k )
| sort_by(.key|length)
| reverse
| from_entries

关于json - 在Bash中使用jq按对象属性值的长度降序对它们进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com