简单的jq命令行查询

Simple jq command line query

我有一个更大的数据集,但这是我的 json 文件的示例。

{"units": {
  "1000000043579e28": {
    "1_hostname": "unit-a",
    "3_lastCheckIn": "08/31/21 16:00",
    "screensProcesses": [
      "file1",
      "file2" ]},
  "10000000553ff4cd": {
    "1_hostname": "unit-b",
     "3_lastCheckIn": "08/31/21 16:00",
    "screensProcesses": [
      "file1" ]}
}}

我想在 linux 中使用 jq 二进制文件。我正在尝试执行 2 个查询。

  1. 少于 2 个“screenProcesses”的单元。
  2. 超过 24 小时未签到的单元。 (如果需要,我可以修改在 json 文件中写入日期的方式。

您可能希望将其分成两个问题,因为 #1 相对简单 select 而 #2,处理时间计算本身就是一个主题。在任何情况下,对于#1,您可以使用 with_entriesunits 转换为具有 keyvalue 字段的一系列地图,对具有 select 和再次转换回来。

$ jq '{"units": .units | with_entries(select(.value."screensProcesses" | length < 2))}' file.json
{
  "units": {
    "10000000553ff4cd": {
      "1_hostname": "unit-b",
      "3_lastCheckIn": "08/31/21 16:00",
      "screensProcesses": [
        "file1"
      ]
    }
  }
}