プレイヤーズ・ハイ

 雑多な日記

【小ネタ】jid を使ってみた

jid は JSON をインタラクティブに掘っていくことができるツールです.

GitHub - simeji/jid: json incremental digger https://github.com/simeji/jid

環境

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
$ uname -r
3.10.0-327.28.3.el7.x86_64

jid のインストール

# cd /tmp
# curl -LO https://github.com/simeji/jid/releases/download/0.6.2/jid_linux_amd64.zip
# unzip ./jid_linux_amd64.zip
# cp ./jid_linux_amd64 /usr/local/bin/jid
# export PATH=$PATH:/usr/local/scala/bin

JSON を掘ってみる

以下の JSON ファイルを jid コマンドで掘っていきます.

{
  "aa": "2AA2",
  "bb": {
    "aaa": [
      123,
      "cccc",
      [
        1,
        2
      ]
    ],
    "c": 321
  }
}

JSON を echo しパイプで jid コマンドに渡します(以下のようにファイルから読み込むこともできます.$ jid < file.json).

$ echo '{"aa":"2AA2","bb":{"aaa":[123,"cccc",[1,2]],"c":321}}'| jid

使い方としてはざっくりと,

jid に JSON を食わせて,TAB と ENTER キーをペコペコ押していれば使い方が掴めると思います.

全キーマップは https://github.com/simeji/jid#keymaps

TAB キーを押下すると,掘っていける候補が出力されます.以下でいうと aa bb の部分です.

[Filter]> .
 aa bb
{
  "aa": "2AA2",
  "bb": {
    "aaa": [
      123,
      "cccc",
      [
        1,
        2
      ]
    ],
    "c": 321
  }
}

掘りたい候補がハイライトされた状態で ENTER キーを押下すると,その要素を掘っていけます.

(JSON に要素があれば) 更にドットキーを押下し,TAB キーを押下して掘っていけます.

[Filter]> .bb.
 aaa c
{
  "aaa": [
    123,
    "cccc",
    [
      1,
      2
    ]
  ],
  "c": 321
}

たとえば $ aws cloudwatch describe-alarms コマンドを jid で掘っていくと,以下のようになります.

[Filter]> .MetricAlarms[0].Dimensions[0].Value                                                                                                                                                                                                              "i-0e22a8eef9eea680b"
"i-0exxxxxxxxxxxxxxx"

番外編

あるプレフィックス名を持つ CloudWatch アラームが作成されている EC2 インスタンス ID の一覧を取得する.

$ aws cloudwatch describe-alarms --alarm-name-prefix [CloudWatchアラーム名のプレフィックス] --query MetricAlarms[].Dimensions[].Value