created: 2021-01-18T05:33:20.000Z

jqで正規表現を使ってフィルタする

selecttest をつかってフィルタする

こんなjsonがあったとして。

$ cat /tmp/_
{
  "monitors": [
    {
      "id": "mysql",
      "name": "mysql-freeable_memory"
    },
    {
      "id": "redis10",
      "name": "redis10-freeable_memory"
    },
    {
      "id": "redis11",
      "name": "redis11-freeable_memory"
    }
  ]
}

たとえば monitorsオブジェクトのname属性を正規表現で絞って数値を見たいとき。

$ cat /tmp/_ | jq '.monitors[] | select(.name | test("^redis.+freeable_memory"))'
{
  "id": "redis10",
  "name": "redis10-freeable_memory"
}
{
  "id": "redis11",
  "name": "redis11-freeable_memory"
}

参考