【发布时间】:2019-06-27 13:25:49
【问题描述】:
这是我拥有的两个 json 文件 JSON1.json
{
"name": "HOSTNAME1",
"chef_environment": "non_prod",
"run_list": [
"role[MyOrg-non_prod]",
"role[rhel7-latest]",
"role[middleware-nonprod-all]",
"role[MyApp-middleware_corebase_prod]",
"role[MyApp_envs-test]",
"role[MyApp_envs-dev]",
"role[MyApp_nfs_mount]",
"role[MyApp_access-dev]",
"role[MyOrg-client-wrapper]"
]
}
JSON2.json
{
"name": "HOSTNAME2",
"chef_environment": "non_prod",
"run_list": [
"role[MyOrg-non_prod]",
"role[rhel7-latest]",
"role[MyApp_unix_app-dev]",
"role[MyApp_middleware_corebase_prod]"
]
}
这些文件可能会或可能不会排序。我需要获取 JSON1 中不可用的 JSON2 的唯一值
我最初尝试过使用类似的命令
findstr /vig:JSON1.json JSON2.json | grep -v name| grep -e MyApp -e MyOrg | tr -d '\n'| sed -e 's:"::g' -e 's: *::g' -e 's:,$::'
但是,这种方法有效,例如 在 JSON1 我有一个条目 “角色[MyApp_middleware_corebase_prod]”,
在 JSON2 中 “角色[MyApp_middleware_corebase_prod]”
注意逗号的区别,虽然条目是相同的,因此不是唯一的,但是由于逗号的存在,这被认为是唯一的,并且给了我不想要的输出。
如果我比较 JSON1 和 JSON2,预期的输出是 角色[MyApp_unix_app-dev] 因为这只是 JSON2 独有的
如果我比较 JSON2 和 JSON1
role[MyApp_envs-test],role[MyApp_envs-dev],role[MyApp_nfs_mount],role[MyApp_access-dev],role[MyOrg-client-wrapper]
【问题讨论】: