我有两个不同模式的JSON文件。JSON文件中的示例数据为
File1.json
{
"ServiceSettings": {
"ServiceName": "my-service",
"RedisSettings": {
"RedisHost": "HOST-A;HOST-B"
}
}
}
File2.json:
{
"RedisHost": "HOST-A;HOST-B"
}
我有一个如下的需求,条件通过管道动态传递
我设置一个变量预置为host_orderA="HOST-A;HOST-B"
& host_orderB="HOST-B;HOST-A"
1.如果条件是A,则RedisHost应该是
"RedisHost": "HOST-A;HOST-B"
1.如果条件为B,则RedisHost应为
"RedisHost": "HOST-B;HOST-A"
1.不管主机列表HOST-A和HOST-B在实际JSON文件中的顺序如何,我想在JSON中对主机进行排序,并将数据打印或输出到变量中,或者根据上面的条件1和2使用sponge
在相同的JSON文件中进行替换。
我尝试了一些使用sed & JQ的东西,但无法获得正确的输出。我更喜欢使用JQ来代替它,因为它是JSON友好的。
3条答案
按热度按时间7ajki6be1#
这不是一个特别 * 干净 * 的解决方案,但以下工作:
我们使用
split(";")
将字符串拆分为数组;过滤与你想要的模式匹配的数组元素;过滤与你的模式不匹配的数组元素;然后将这两个子列表连接在一起。wqnecbli2#
如果
.RedisHost
的格式是固定的,你可以尝试:uqcuzwp83#
我自己解决的。