Ubuntuでは、単純に jq をインストールできます。
apt-get install jq
しかし、Debianではリポジトリにありません。
コンソールでJSON文字列を解析する代替コマンドラインはありますか?
python(fantasycode)のようにしてこれを達成できるかもしれません:
cat test.json | python 'parse_json(stdin)'
1つのCLI jsonパーサーは jshon です。以下に簡単な例を示します。
$ jshon -e foo -u <<< '{ "foo":"bar" }'
bar
-e
オプションはjsonから値を抽出し、-u
は最終的な文字列をデコードします。
jqはWheezyバックポートにあり、ジェシーのために予定されています
Wheezyのバックポートの場合、/ etc/apt/sources.list(またはsources.d/???。listにファイル)に以下を追加します
deb http://http.debian.net/debian wheezy-backports main
次に:
apt-get -t wheezy-backports install jq
別の選択肢:
python -m json.tool file.json
jp は、Python library jmespath に基づいたjqの代替となるJSON解析CLIの1つです。依存するかなり堅固なツールです。 AWS cliのデフォルトのJSON解析ライブラリ )。
問題のライブラリは Debianで利用可能 のようですが、jp CLIインターフェースはそうではありません。
jello
を作成しました。これにより、フィルターで純粋なpythonコードを使用できます。
$ jc -a | jello '[entry["name"] for entry in _["parsers"] if "darwin" in entry["compatible"]]'
[
"airport",
"airport_s",
"arp",
"crontab",
"crontab_u",
...
]
https://github.com/kellyjonbrazil/jello
その他の例:
https://blog.kellybrazil.com/2020/03/25/jello-the-jq-alternative-for-pythonistas/
fx ???? を見てください。
これは、スタンドアロンバイナリを備えたプレーンなJavaScript CLI JSON操作ツール(jqの代替)です。
program | fx 'input => input.filter(x => ...).map(x => {a: a.x})'
jtc
unixユーティリティも見てください。JSONクエリを大幅に達成することを目的としてjtc
を開発しました。
jtc
イディオマティックソリューションは、入力データの省略に耐性があり、入力データの外部構造に対して不変です(長いウォーキングJSON要素が同じ関係を維持するため)