如何根据特定条件使用jq
进行过滤?
使用https://stedolan.github.io/jq/tutorial/#result2中的示例,例如,我想按
过滤结果.commit.author.date>=2016
和.commit.comment_count>=1
所有不符合此类标准的项目都不会出现在最终结果中。
正确的jq
表达式是做什么的?谢谢。
答案 0 :(得分:1)
响应是包含提交信息的对象数组。由于您要过滤该数组,因此您通常需要map/1
该数组并使用select/1
:map(select(...))
进行过滤。您只需要提供过滤条件。
map(select(.commit | (.author.date[:4] | tonumber) >= 2016 and .comment_count >= 1))
此特定情况下的日期是iso格式的日期字符串。我假设您想要获得2016年及以后的提交。提取年份部分并进行比较。
(.author.date[:4] | tonumber) >= 2016
然后将其与比较评论计数结合起来。
注意,我首先预测了提交,以尽量减少过滤器中的重复。我可以很容易地把那部分留下来。
map(select((.commit.author.date[:4] | tonumber) >= 2016 and .commit.comment_count >= 1))