命令只保留每行的一部分 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这似乎是一个更好的工具,但我仍然认为json它是解析 json 数据的一个非常好的工具。

答案4

您可以尝试使用cutsed

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

输出:

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

相关内容