我有这个JSON文件:
{
"system.timestamp": "{system.timestamp}",
"error.state": "{error.state}",
"system.timestamp": "{system.timestamp}",
"error.state": "{error.state}",
"system.timestamp": "{system.timestamp}",
"error.state": "{error.state}",
"error.content": "{custom.error.content}"
}
我想只获取JSON文件的最后一个对象,因为我需要检查在每种情况下,最后一个对象是error.content
。附加的代码部分只是一个示例文件,实际生成的每个文件将包含至少大约40到50个对象,因此在每种情况下我都需要检查最后一个对象是error.content
。
我使用jq '. | length'
计算了长度。如何在Linux中使用jq
命令执行此操作?
注意:它是一个没有任何数组的普通JSON文件。
答案 0 :(得分:1)
可以使用--stream选项在jq中处理具有重复键的对象,例如:
$ jq -s --stream '.[length-2] | { (.[0][0]): (.[1]) }' input.json
{
"error.content": "{custom.error.content}"
}
对于大型文件,以下内容可能会更好,因为它可以避免" slurping"输入文件:
$ jq 'first(tostream) | {(.[0][0]): .[1]} ' input.json