【问题标题】:JQ : Parse specific output (get IP) from JSON fileJQ:从 JSON 文件解析特定输出(获取 IP)
【发布时间】:2020-04-02 02:08:12
【问题描述】:

我想获取具有“server.sh”值的 IP。我当前的脚本获取所有 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"]

【问题讨论】:

标签: json shell ubuntu jq


【解决方案1】:

你的任务还可以吗?

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

【讨论】:

  • 是的。我需要这种格式 ["192.168.56.30:4648","192.168.56.31:4648"]
  • 那就改成jq -cn '[inputs|.nodes[]|select(.":server"=="server.sh")|"\(.":ip"):4648"]'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多