JQ: анализировать c вывод (получить IP) из файла JSON - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу получить IP-адреса со значением 'server. sh'. Мой текущий скрипт получает все IP-адреса

test. json

{
  "nodes": {
    "test1.local": {
      ":ip": "192.168.56.30",
      ":server": "server.sh",
      ":client": "client.sh"
    },
    "test2.local": {
      ":ip": "192.168.56.31",
      ":server": "server.sh",
      ":client": "client.sh"
    },
    "test3.local": {
      ":ip": "192.168.56.32",
      ":client": "client.sh"
    }
  }
}

test. sh

ips=`jq -c '.nodes | to_entries | map(.value.":ip")| map_values(.+":4648")' test.json`
echo $ips

["192.168.56.30:4648","192.168.56.31:4648","192.168.56.32:4648"]

1 Ответ

2 голосов
/ 02 апреля 2020

Это нормально для вашей задачи?

jq '.nodes|.[]|select(.":server"=="server.sh")|.":ip"+":4648"' test.json 
"192.168.56.30:4648"
"192.168.56.31:4648"
...