我有一个输出多个简单json对象的命令,如下所示(出于开发目的,以前通过管道传输到文件foo.txt):
$ cat foo.txt
{"a": "b"}
{"a": "e"}
{"a": "f"}现在,我想让它像这样格式化:
{
"a": ["b", "e", "f"]
}我非常确定使用jq可以做到这一点,但我能得到的只有以下内容:
$ cat foo.txt |jq -n '.a |= [inputs]'
{
"a": [
{
"a": "b"
},
{
"a": "e"
},
{
"a": "f"
}
]
}有什么提示吗?
发布于 2020-12-16 00:47:23
你们真的很亲近。JQ不会从输入对象中提取.a,除非您显式声明这一点。
$ jq -n '.a = [inputs.a]' foo.txt
{
"a": [
"b",
"e",
"f"
]
}发布于 2020-12-16 00:47:11
我将使用以下内容:
jq --slurp --compact-output '{ a: map(.a) }' foo.txt--slurp使jq将一系列JSON对象作为这些对象的数组进行读取。我们将这个对象数组映射到它们的.a字段的值数组,最后返回一个对象,该对象将这个数组作为它的.a字段。
你可以使用try it here。
https://stackoverflow.com/questions/65310051
复制相似问题