【问题标题】:Get only data that are 30 days old using jq使用 jq 仅获取 30 天前的数据
【发布时间】:2019-12-09 01:43:24
【问题描述】:

我有一个 json 文件,其中包含与此类似的用户访问数据。我正在尝试过滤掉过去 30 天未访问系统的用户(名称和 accessDate 字段)。有谁知道这是否可以使用 jq 操作来完成?

"items": [
{
    "id": "1",
    "accessDate": "2019-11-13T11:35:39.1097956",
    "user":{
        "name": "john doe"
    }
}
{
    "id": "2",
    "accessDate": "2019-10-13T11:35:39.1097956",
    "user":{
        "name": "scott doe"
    }
}
{
    "id": "3",
    "accessDate": "2019-9-13T11:35:39.1097956",
    "user":{
        "name": "matt doe"
    }
}

【问题讨论】:

    标签: json date select jq


    【解决方案1】:

    假设输入是合法的JSON,以“items”作为顶级key,那么“items”的值可以相对now更新如下:

    (now - 30*24*60*60 | strflocaltime("%Y-%m-%dT%H:%M:%S")) as $recent
    | .items |= map( select((.accessDate
                             | sub("-(?<d>[0-9]-)";"-0\(.d)")) >= $recent) )
    

    (需要调用sub 来处理以-d- 给出的月份。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 2021-03-24
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      相关资源
      最近更新 更多