英文:
Get the first JSON object from a file containing a sequence of JSON objects
问题
我有一个包含一系列 JSON 对象的文件。使用 jq 工具,我如何从该文件中获取第一个 JSON 对象?
我尝试过 jq limit(1; .) input.jsonl
,但这限制了文件中每个单独对象的长度,而不是只给我第一个对象。我也已经阅读了 jq 的整个手册!也许我漏掉了什么。
英文:
I have a file containing a sequence of json objects. Using the jq tool, how can I get the first json object from that file?
I have tried jq limit(1; .) input.jsonl
but that limits the length of each individual object in the file, rather than giving me just the first object. I have also read through the whole of the jq man page! Maybe I missed something.
答案1
得分: 4
空输入(-n
)在这种情况下非常有用:
jq -n 'input' file.json
input
过滤器 将从提供的输入流中读取一个单独的JSON元素。
示例:
jq -n 'input' <<JSON
{ "first element": [ 1, 2 ] }
{ "second element": [ 3, 4, 5 ] }
JSON
输出:
{
"first element": [
1,
2
]
}
英文:
Null input (-n
) is useful in such a case:
jq -n 'input' file.json
The input
filter will read a single JSON element from the provided input stream.
Example:
jq -n 'input' <<JSON
{ "first element": [ 1, 2 ] }
{ "second element": [ 3, 4, 5 ] }
JSON
Output:
{
"first element": [
1,
2
]
}
答案2
得分: 0
{
"对于像这样的输入文件\n\n```json\n{\n \"a\": \"b\"\n}\n{\n \"c\": \"d\"\n}\n```\n\n你可以\n\n- 吞掉整个输入然后打印第一个数组元素:\n\n ```sh\n $ jq -s '.[0]' in.json \n {\n \"a\": \"b\"\n }\n ```\n\n- 使用空输入,然后使用 `inputs`:\n\n ```sh\n $ jq -n '[inputs][0]' in.json \n {\n \"a\": \"b\"\n }"
}
英文:
For an input file like
{
"a": "b"
}
{
"c": "d"
}
you could
-
slurp the entire input and then print the first array element:
$ jq -s '.[0]' in.json { "a": "b" }
-
use null-input, and then
inputs
:$ jq -n '[inputs][0]' in.json { "a": "b" }
答案3
得分: -1
好的,可以这样做:
jq -c . INPUT.JSONL | jq -n 'input | first'
-c选项表示每行输出一个条目,然后使用jq
的-n
选项来执行单个jq
命令以获取第一行。
英文:
Well okay one way to do it is like this:
jq -c . INPUT.JSONL | head -n 1 | jq
The -c option says to output the entries one per line, then head
gets the first line, then we pretty-print it again with jq. Surely there is a way to do this with just a single invokation of jq?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论