使用shell从curl中解析json

时间:2015-10-21 01:07:25

标签: bash shell curl

当我卷曲到我的网址时,我会收到以下格式的JSON:

{"busyexecutors":0,
 "computers":[{"displayName":"Master","actions":[{},{},{}]},
              {"displayName":"137.0.01","actions":[{},{},{}]}]}

我想只提取displayName,它不等于Master。所以输出应该是" 137.0.0.1"。

让我知道是否可以在没有像jq。

这样的外部工具的情况下实现这一点

2 个答案:

答案 0 :(得分:2)

在使用JSON时,使用正确的JSON解析器 的原因很少。

jq -r '.computers | .[].displayName | select(.!="Master")' <<EOF
{"busyexecutors":0,
 "computers":[{"displayName":"Master","actions":[{},{},{}]},
          {"displayName":"137.0.01","actions":[{},{},{}]}]}
EOF

答案 1 :(得分:1)

正如已经指出的,这是一个坏主意。但是,如果你坚持这样做:

#!/usr/bin/awk -f
{
  split($0, z, /"/)
  for (y in z)
    if (z[y] == "displayName")
      if (z[y+2] != "Master")
        print z[y+2]
}