使用jq打印具有指定值内容的json文件中的所有条目

时间:2016-12-31 19:52:24

标签: json select jq

我第一次使用jq。我有一个大型的json文件,其条目如下所示。我想为“file_name”包含197407的所有条目打印完整内容(如下所示)

{
    "license": 5,
    "file_name": "COCO_train2014_000000057870.jpg",
    "coco_url": "http://mscoco.org/images/57870",
    "height": 480,
    "width": 640,
    "date_captured": "2013-11-14 16:28:13",
    "flickr_url": "http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg",
    "id": 57870
}

我尝试了以下操作,并收到以下错误:

$ cat file1.json | jq -c '.file_name[]  | 
select(.file_name[]|contains("197407"))' 

jq: error: Cannot iterate over null

问题2:我想“抽样”文件的内容(它包含多种格式的内容),也许是通过打印每1000个条目。 jq可以这样做吗?

2 个答案:

答案 0 :(得分:0)

假设您的输入文件包含您发布的模型数组,您可以将记录与:

匹配
.file_name[]

在您的陈述中file_name表示您想要返回数组的每个元素textBox7.Text

答案 1 :(得分:0)

回复:Q2

为提高效率,请按照杰夫提出的方针:

.[range(0;length;1000)]

或者为了好玩:

recurse(.[1000:]; . !=  []) | .[0]