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

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

Sponsored Links

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

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

20160111_000000

[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"
}
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。