gpt4 book ai didi

bash - 如何遍历字典列表并根据 Bash 中的键对输出进行排序?

转载 作者:行者123 更新时间:2023-12-04 18:54:53 34 4
gpt4 key购买 nike

我们从下面的字典格式列表中获取 API 调用的输出,

[
{
"Key": "/builder-deployer/test2/services/serviceA/ip",
"Val": "10.1.2.1"
},
{
"Key": "/builder-deployer/test2/services/serviceA/port",
"Val": "2"
},
{
"Key": "/builder-deployer/test2/services/serviceA/url",
"Val": "serviceA.abc.com"
},
{
"Key": "/builder-deployer/test2/services/serviceA/username",
"Val": "jenkins"
},
{
"Key": "/builder-deployer/test2/services/serviceB/ip",
"Val": "10.1.2.2"
},
{
"Key": "/builder-deployer/test2/services/serviceB/port",
"Val": "3"
},
{
"Key": "/builder-deployer/test2/services/serviceB/url",
"Val": "serviceB.abc.com"
},
{
"Key": "/builder-deployer/test2/services/serviceB/username",
"Val": "jenkins"
},
{
"Key": "/builder-deployer/test2/services/serviceC/ip",
"Val": "10.1.2.2"
},
{
"Key": "/builder-deployer/test2/services/serviceC/port",
"Val": "4"
},
{
"Key": "/builder-deployer/test2/services/serviceC/url",
"Val": "serviceC.abc.com"
},
{
"Key": "/builder-deployer/test2/services/serviceC/username",
"Val": "jenkins"
}
]
我需要从列表中以 username@ip 的形式获取唯一的用户名和 IP 组合以安装一些依赖项。
即在上面的字典列表中,我们有 2 个唯一的 username@ip 组合。所以我需要在 上安装软件包 Jenkins @10.1.2.1 , Jenkins @10.1.2.2 机分别。
我在 python 脚本中有下面的代码,它做同样的事情,但我们的大部分代码都在 Bash 中,我们也想将它转换为 Bash。任何帮助都会非常有帮助
ip=[]
for username in outputs:
for ip in outputs:
if username['Key'].split('/')[-2] == ip['Key'].split('/')[-2] and username['Key'].split('/')[-1] in ['username'] and ip['Key'].split('/')[-1] in ['ip']:
ip.append(username['Val']+'@'+ip['Val'])
print(set(ip))

最佳答案

jq

$ FILE="file.json"
$ paste -d@ \
<(jq -r '.[]|select(.Key|contains("/username")).Val' "$FILE") \
<(jq -r '.[]|select(.Key|contains("/ip")).Val' "$FILE") | \
sort -u

jenkins@10.1.2.1
jenkins@10.1.2.2
awk
awk -F\" '/\/ip/{getline;ip=$4}/username/{getline;$0=$4"@"ip;print|"sort -u"}' "$FILE"

jenkins@10.1.2.1
jenkins@10.1.2.2

关于bash - 如何遍历字典列表并根据 Bash 中的键对输出进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72389200/

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