jsonデータを整形・絞り込みできるjqコマンドをmacOSにインストールしたかったので、HomeBrewでインストールしてみました。
インストール
以下を実行します。
$ brew install jq
実行時のログは以下の様な感じでした
$ brew install jq ==> Installing dependencies for git: pcre2 ==> Installing git dependency: pcre2 ==> Downloading https://homebrew.bintray.com/bottles/pcre2-10.32.mojave.bottle.tar.gz Updating Homebrew... ######################################################################## 100.0% ==> Pouring pcre2-10.32.mojave.bottle.tar.gz 🍺 /usr/local/Cellar/pcre2/10.32: 224 files, 5.5MB ==> Installing git ==> Downloading https://homebrew.bintray.com/bottles/git-2.19.2.mojave.bottle.tar.gz ######################################################################## 100.0% ==> Pouring git-2.19.2.mojave.bottle.tar.gz ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completions and functions have been installed to: /usr/local/share/zsh/site-functions Emacs Lisp files have been installed to: /usr/local/share/emacs/site-lisp/git ==> Summary 🍺 /usr/local/Cellar/git/2.19.2: 1,520 files, 40.1MB ==> Caveats ==> git Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completions and functions have been installed to: /usr/local/share/zsh/site-functions Emacs Lisp files have been installed to: /usr/local/share/emacs/site-lisp/git xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Warning: Aleth (formerly cpp-ethereum) has been removed from Homebrew. Please install binary releases from https://github.com/ethereum/aleth/releases. ==> Auto-updated Homebrew! Updated 3 taps (homebrew/core, homebrew/cask and ethereum/ethereum). ==> New Formulae (中略) ==> Renamed Formulae ark -> velero gnatsd -> nats-server todolist -> ultralist confluent-oss -> confluent-platform php72 -> php@7.2 transmission -> transmission-cli gloo-ctl -> glooctl resin-cli -> balena-cli ==> Deleted Formulae apple-gcc42 gdnsd js-test-driver pdftoedn rock tomcat@6 at-spi2-atk gnome-doc-utils ld64 percona-server@5.6 ruby@1.8 typesafe-activator at-spi2-core go@1.4 libggz php@5.6 ruby@2.3 varnish@4 cctools go@1.8 libguess php@7.0 safe whirr cctools-headers gradle@2.14 liblastfm plan9port scala@2.10 xmoto compose2kube gtk-engines libutf pldebugger smlnj zxing-cpp cputhrottle gtk-murrine-engine lysp protobuf@2.5 solr@5.5 dsd guile@2.0 minisat protobuf@2.6 solr@6.6 erlang@18 gv monax pyexiv2 swig@3.04 ffmbc hyper node@6 rlvm tmux-cssh ==> Installing dependencies for jq: oniguruma ==> Installing jq dependency: oniguruma ==> Downloading https://homebrew.bintray.com/bottles/oniguruma-6.9.3.mojave.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/f0/f00f8c6f8afd8875fed685a9190cb0c5e9b5ceef58ef1e489fb17a42bddc9672?__gda__=exp=1 ######################################################################## 100.0% ==> Pouring oniguruma-6.9.3.mojave.bottle.tar.gz 🍺 /usr/local/Cellar/oniguruma/6.9.3: 17 files, 1.3MB ==> Installing jq ==> Downloading https://homebrew.bintray.com/bottles/jq-1.6.mojave.bottle.1.tar.gz ==> Downloading from https://akamai.bintray.com/71/71f0e76c5b22e5088426c971d5e795fe67abee7af6c2c4ae0cf4c0eb98ed21ff?__gda__=exp=1 ######################################################################## 100.0% ==> Pouring jq-1.6.mojave.bottle.1.tar.gz 🍺 /usr/local/Cellar/jq/1.6: 18 files, 1MB ==> `brew cleanup` has not been run in 30 days, running now... Removing: /Users/yuki/Library/Caches/Homebrew/git--2.19.2.mojave.bottle.tar.gz... (15.2MB) Removing: /Users/yuki/Library/Caches/Homebrew/go--1.11.1.sierra.bottle.tar.gz... (140.5MB) Removing: /Users/yuki/Library/Caches/Homebrew/icu4c--62.1.sierra.bottle.tar.gz... (25.4MB) Removing: /Users/yuki/Library/Caches/Homebrew/jenv--0.4.4.tar.gz... (18KB) Removing: /Users/yuki/Library/Caches/Homebrew/nkf--2.1.4.sierra.bottle.tar.gz... (157.8KB) Removing: /Users/yuki/Library/Caches/Homebrew/node--11.2.0.sierra.bottle.tar.gz... (13.3MB) Removing: /Users/yuki/Library/Caches/Homebrew/pcre2--10.32.mojave.bottle.tar.gz... (1.8MB) Removing: /Users/yuki/Library/Caches/Homebrew/tree--1.8.0.sierra.bottle.tar.gz... (50.5KB) Removing: /Users/yuki/Library/Caches/Homebrew/yarn--1.12.3.tar.gz... (1.1MB) Removing: /Users/yuki/Library/Caches/Homebrew/z3-4.7.1.sierra.bottle.tar.gz... (27.3MB) Removing: /Users/yuki/Library/Caches/Homebrew/openssl-1.0.2o_2.sierra.bottle.tar.gz... (3.7MB) Removing: /Users/yuki/Library/Caches/Homebrew/gdbm-1.14.1_1.sierra.bottle.tar.gz... (182.5KB) Removing: /Users/yuki/Library/Caches/Homebrew/gettext-0.19.8.1.sierra.bottle.tar.gz... (7.8MB) Removing: /Users/yuki/Library/Caches/Homebrew/readline-7.0.3_1.sierra.bottle.tar.gz... (497.3KB) Removing: /Users/yuki/Library/Caches/Homebrew/python@2-2.7.15.sierra.bottle.tar.gz... (18.3MB) Removing: /Users/yuki/Library/Caches/Homebrew/wget-1.19.5.sierra.bottle.tar.gz... (1.3MB) Removing: /Users/yuki/Library/Caches/Homebrew/cmake-3.11.3.sierra.bottle.tar.gz... (11.8MB) Removing: /Users/yuki/Library/Caches/Homebrew/boost-1.67.0_1.sierra.bottle.tar.gz... (86.6MB) Removing: /Users/yuki/Library/Caches/Homebrew/linkage.db... (48KB) Removing: /Users/yuki/Library/Caches/Homebrew/sqlite-3.24.0.sierra.bottle.tar.gz... (1.7MB) Removing: /Users/yuki/Library/Caches/Homebrew/nodebrew-1.0.0.tar.gz... (26.3KB) Removing: /Users/yuki/Library/Caches/Homebrew/solidity-0.4.24.tar.gz... (1.1MB) Removing: /Users/yuki/Library/Caches/Homebrew/portable-ruby-2.3.3_2.leopard_64.bottle.tar.gz... (12.4MB) Removing: /Users/yuki/Library/Caches/Homebrew/ethereum-1.8.10.sierra.bottle.tar.gz... (64.2MB) Removing: /Users/yuki/Library/Caches/Homebrew/portable-ruby-2.3.7.leopard_64.bottle.tar.gz... (12.4MB) Removing: /Users/yuki/Library/Caches/Homebrew/go-1.10.3.sierra.bottle.tar.gz... (102.6MB) Removing: /Users/yuki/Library/Caches/Homebrew/openssl-1.0.2o_1.sierra.bottle.tar.gz... (3.7MB) Removing: /Users/yuki/Library/Caches/Homebrew/watch-3.3.15.sierra.bottle.tar.gz... (30.9KB) Removing: /Users/yuki/Library/Caches/Homebrew/nmap-7.70.sierra.bottle.tar.gz... (7.1MB) Removing: /Users/yuki/Library/Caches/Homebrew/libunistring-0.9.10.sierra.bottle.tar.gz... (1.4MB) Removing: /Users/yuki/Library/Caches/Homebrew/ccache-3.4.2.sierra.bottle.tar.gz... (89.8KB) Removing: /Users/yuki/Library/Caches/Homebrew/libidn2-2.0.5.sierra.bottle.tar.gz... (217.4KB) Removing: /Users/yuki/Library/Caches/Homebrew/Cask/adoptopenjdk--11.0.1,13.tar.gz... (181.1MB) Removing: /Users/yuki/Library/Logs/Homebrew/z3... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/tree... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/wget... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/libidn2... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/ccache... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/python@2... (3 files, 123.9KB) Removing: /Users/yuki/Library/Logs/Homebrew/go... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/gdbm... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/cmake... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/boost... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/libunistring... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/icu4c... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/nkf... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/readline... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/sqlite... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/yarn... (100B) Removing: /Users/yuki/Library/Logs/Homebrew/solidity... (6 files, 563.5KB) Removing: /Users/yuki/Library/Logs/Homebrew/nodebrew... (104B) Removing: /Users/yuki/Library/Logs/Homebrew/gettext... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/watch... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/node... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/jenv... (100B) Removing: /Users/yuki/Library/Logs/Homebrew/nmap... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/openssl... (64B) Removing: /Users/yuki/Library/Logs/Homebrew/ethereum... (64B) Pruned 0 symbolic links and 2 directories from /usr/local
サンプル的に試してみる
例えば、以下の郵便番号による住所検索 API
を curl
で実行して、それを jq
コマンドにパイプで渡してみます(queryパラメータの postal
に指定している値が郵便番号)
curl "http://geoapi.heartrails.com/api/json?method=searchByPostal&postal=1060032" | jq
実行してみると以下のようになります。
$ curl "http://geoapi.heartrails.com/api/json?method=searchByPostal&postal=1060032" | jq % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1882 0 1882 0 0 59882 0 --:--:-- --:--:-- --:--:-- 60709 { "response": { "location": [ { "city": "港区", "city_kana": "みなとく", "town": "六本木一丁目", "town_kana": "ろっぽんぎ1ちょうめ", "x": "139.740991", "y": "35.665082", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木二丁目", "town_kana": "ろっぽんぎ2ちょうめ", "x": "139.737087", "y": "35.666974", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木三丁目", "town_kana": "ろっぽんぎ3ちょうめ", "x": "139.735452", "y": "35.663977", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木四丁目", "town_kana": "ろっぽんぎ4ちょうめ", "x": "139.733837", "y": "35.665489", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木五丁目", "town_kana": "ろっぽんぎ5ちょうめ", "x": "139.735248", "y": "35.658358", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木六丁目", "town_kana": "ろっぽんぎ6ちょうめ", "x": "139.729932", "y": "35.659856", "prefecture": "東京都", "postal": "1060032" }, { "city": "港区", "city_kana": "みなとく", "town": "六本木七丁目", "town_kana": "ろっぽんぎ7ちょうめ", "x": "139.726863", "y": "35.664751", "prefecture": "東京都", "postal": "1060032" } ] } }
これだけで、JSONを見やすく整形した状態で出力してくれます
jq
コマンドは、かなり色々とできるはずなので、使い方調べながらもっと使いこなせるようになりたいです。