jqコマンドで値の有無(null)を判別させる

最近、仕事でAWSやAzureを利用するようになってから、JSON形式のファイルに触れる事が多くなってきた。
JSON形式のファイルをイジる場合、MacやLinux環境だとjqコマンドというものを用いると楽に整形出来るので良く利用しているのだけど、これで特定の項目がnullの場合(nullじゃない場合)に対象のデータを表示させるような使い方(具体的には、AzureのパブリックIPに対してhostsの自動生成をする際、払いだされてない仮想マシンを除外するため)が必要になったので、その備忘。

jqコマンドで、項目の値に応じて表示/非表示を切り替える場合には、「select」を用いる。
なので、その項目がnullの場合だと、以下のようにコマンドを実行する。

bash
jq 'select(.ipAddress ==null)' #nullの時 jq 'select(.ipAddress !=null)' #nullじゃない時

shell
[root@localhost ~]# cat /tmp/test.json | jq 'select(.ipAddress ==null)' { "name": "A3", "ipAddress": null } [root@localhost ~]# [root@localhost ~]# # NULLの時 [root@localhost ~]# cat /tmp/test.json | jq 'select(.ipAddress ==null)' { "name": "A3", "ipAddress": null } [root@localhost ~]# [root@localhost ~]# # NULLじゃない時 [root@localhost ~]# cat /tmp/test.json | jq 'select(.ipAddress !=null)' { "name": "A1", "ipAddress": "192.168.0.100" } { "name": "A2", "ipAddress": "192.168.0.101" }