web-dev-qa-db-ja.com

各行のJSONデータの一部のみを保持するコマンド?

行の長さが異なるtest.jsonファイルがあります。架空の例:

{ "a" : 123, "b": "sd", "c": 45, "d": 1, "e": "" }
{ "a": 5, "b": "bfgg", "c": "x4c", "d": 31, "e": "" }

すべての行でbだけを保持したい:

{ "b": "sd"}
{ "b": "bfgg"}
9
Anush

適切な jq ツールを使用:

jq -c '{"b": .b}' test.json

出力:

{"b":"sd"}
{"b":"bfgg"}
12
RomanPerekhrest

ミラー

$ mlr --json cut -f b test.json
{ "b": "sd" }
{ "b": "bfgg" }
7
steeldriver

json jsonパーサーの使用:

json -f test.json -gac 'return console.log("{ \"b\": \"" + this.b + "\" }")'

この場合、jqはこのためのより良いツールのように見えますが、jsonはjsonデータを解析するための本当に素晴らしいツールだと私はまだ思います。

3
jesse_b

cutsedでこれを試すことができます:

cut -d',' -f2 file | sed -e 's/^/{/' -e 's/$/ }/'

出力:

{ "b": "sd" }
{ "b": "bfgg" }
2