行ごとにJSONデータの一部のみを保持するコマンドですか?

行ごとに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"}

答え1

適切ジャックツール:

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

出力:

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

答え2

そしてミラー

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

答え3

使用JSONJSONパーサー:

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

この場合、jqこれはより良いツールのようですが、まだjsonjsonデータを解析するのには非常に良いツールだと思います。

答え4

cut以下を試すことができますsed

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

出力:

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

関連情報