使用 JQ 对 JSON 进行切片以创建用于新 Relic 摄取的数组

使用 JQ 对 JSON 进行切片以创建用于新 Relic 摄取的数组

我需要获取一些 JSON,使用 JQ 对它进行切片,以便 New Relic 可以正确解析它,因为在将 JSON 推送到仪表板时它只采用特定的格式。

我使用 bash 脚本和 WPCLI,然后使用 JQ 格式化 JSON 输出。

下面是我的脚本。

#!/bin/bash

#for d in /var/www/* ; do
#   echo "$d"
#done

for f in /var/www/*/public_html/; do
    if [[ -d $f ]]; then
                #echo "$f"

                cd $f;
                SITEURL="$(wp option get siteurl)"
                USERS="$(wp user list --fields=display_name,user_email,user_registered,roles --format=json | jq .[])"
                PLUGINS="$(wp plugin list --format=json | jq .[])"

                echo "${SITEURL}" "${USERS}" "${PLUGINS}"
                cd ../.. ;
    fi
done

以下是我得到的输出...

cat wp-info-output 
http://mytest1.com {
  "display_name": "testuser1",
  "user_email": "[email protected]",
  "user_registered": "2018-11-26 17:44:09",
  "roles": "administrator"
} {
  "name": "akismet",
  "status": "inactive",
  "update": "available",
  "version": "4.0.8"
}
{
  "name": "hello",
  "status": "inactive",
  "update": "none",
  "version": "1.7"
}

我需要它看起来像这样......

[
  {
    "eventType":"WordpressSite",
    "siteurl":"http://mytest1.com"
  },
  {
    "eventType":"WordpressPlugins",
    "pluginName": "akismet",
    "status": "inactive",
    "update": "available",
    "version": "4.0.8"
  },
    {
    "eventType":"WordpressPlugins",
    "pluginName": "hello",
    "status": "inactive",
    "update": "none",
    "version": "1.7"
  }
  {
    "eventType":"Users",
    "display_name": "testuser2",
    "user_email": "[email protected]",
    "user_registered": "2018-11-26 17:44:04",
    "roles": "administrator"
  }
]

我认为 jq 是我对 JSON 进行格式化的答案,但我遇到了一些困难。

答案1

看来你想获取所有这些 JSON 对象并将它们混合在一位数组中:尝试

siteurl=$(wp option get siteurl)
users=$(
    wp user list --fields=display_name,user_email,user_registered,roles --format=json) |
    jq '.[] | .eventType = "WordpressUser"'
)
plugins=$( wp plugin list --format=json | jq '.[] | .eventType = "WordpressPlugin"' )

{
    printf '{"eventType":"WordpressSite","siteurl":"%s"}\n' "$(wp option get siteurl)"
    echo "$plugins"
    echo "$users"
} | jq -s .

相关内容