如果 key/value 对满足该对象中的条件,则 JQ 将键值对移动(或复制)到另一个对象

JQ move(or copy) key value pairs to another object if a key/value pair meets condition in that object

我有两个文件,它们非常大,所以我将提供相关数据的片段:

from_file:

  [
    {
      "id": 7212486534162308,
      "rowNumber": 283,
      "cells": [
        {
          "Column": "SS name",
          "columnId": 7408953102493572,
          "displayValue": "Dd Kk",
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 4409864198875012,
            "rowId": 5483738575202180,
            "columnId": 6482434207311748,
            "sheetName": "INFORMATION - J-1000579"
          },
          "value": "Dd Kk"
        },
        {
          "Column": "link",
          "columnId": 5822630258337668,
          "displayValue": "Dd Kk link",
          "hyperlink": {
            "url": "https://app.test.com/fvffvs/dfesfrfr"
          },
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 316850291664772,
            "rowId": 6836472364722052,
            "columnId": 6189414452881284,
            "sheetName": "PROJECT INTAKE SHEET"
          },
          "value": "Dd Kk"
        }
      ]
    },
    {
      "id": 7046413570598788,
      "rowNumber": 284,
      "cells": [
        {
          "Column": "SS name",
          "columnId": 7408953102493572,
          "displayValue": "Macquarie Education Programs",
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 8275059887368068,
            "rowId": 8307181892986756,
            "columnId": 687741640959876,
            "sheetName": "INFORMATION - J-1000532.01"
          },
          "value": "Macquarie Education Programs"
        },
        {
          "Column": "link",
          "columnId": 5822630258337668,
          "displayValue": "Macquarie Education Programs Building - J-10005",
          "hyperlink": {
            "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
          },
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 316850291664772,
            "rowId": 4795289157298052,
            "columnId": 6189414452881284,
            "sheetName": "PROJECT INTAKE SHEET"
          },
          "value": "Macquarie Education Programs - J-10005"
        }
      ]
    }
  ]

to_file:

[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

在 to_file 中,每个包含“columnId”的对象内:5206337428711300 我需要添加 from_file 中的所有键值对(“Column”和“columnId”除外) “columnId”:5822630258337668 包含对象,其中单元格的“columnId”数组:7408953102493572 包含对象具有与 to_file 的“columnId”相同的“displayValue”值:5460306864433028 包含对象“displayValue”值。

期望的结果如下:

[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052, 
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"

      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

谢谢

@PMF 下面的答案有效,但如果 to_file 中有无法在源文件中找到的项目,则会失败。

这有效 Demo

[
    {
    "id": 7660296628791172,
    "rowNumber": 484,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "CSNSW",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4453675823982468,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "CSNSW - J-1000739.01",
        "hyperlink": {
          "url": "https://app.test.com/beffvfdcwe/ergrsvsrfv"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4655985963493252,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW - J-1000739.01"
      }
    ]
  },
  {
    "id": 7212486534162308,
    "rowNumber": 283,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Dd Kk",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 4409864198875012,
          "rowId": 5483738575202180,
          "columnId": 6482434207311748,
          "sheetName": "INFORMATION - J-1000579"
        },
        "value": "Dd Kk"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"
      }
    ]
  },
  {
    "id": 7046413570598788,
    "rowNumber": 284,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Macquarie Education Programs",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 8275059887368068,
          "rowId": 8307181892986756,
          "columnId": 687741640959876,
          "sheetName": "INFORMATION - J-1000532.01"
        },
        "value": "Macquarie Education Programs"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      }
    ]
  }
]
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

这行不通 Demo

[
    {
    "id": 7660296628791172,
    "rowNumber": 484,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "CSNSW",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4453675823982468,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "CSNSW - J-1000739.01",
        "hyperlink": {
          "url": "https://app.test.com/beffvfdcwe/ergrsvsrfv"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4655985963493252,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW - J-1000739.01"
      }
    ]
  },
  {
    "id": 7212486534162308,
    "rowNumber": 283,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Dd Kk",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 4409864198875012,
          "rowId": 5483738575202180,
          "columnId": 6482434207311748,
          "sheetName": "INFORMATION - J-1000579"
        },
        "value": "Dd Kk"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"
      }
    ]
  },
  {
    "id": 7046413570598788,
    "rowNumber": 284,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Macquarie Education Programs",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 8275059887368068,
          "rowId": 8307181892986756,
          "columnId": 687741640959876,
          "sheetName": "INFORMATION - J-1000532.01"
        },
        "value": "Macquarie Education Programs"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      }
    ]
  }
]
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  },
  {
    "id": 7276986526263172,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Dubbo",
        "displayValue": "Dubbo"
      }      
    ]
  }
]

谢谢!!

您可以在匹配的 displayValue 上构建 INDEX,然后 JOIN 通过更新 += to.json 中的正确对象来构建数组from.json中的对应对象:

已修复:在连接更新中使用 try 可防止匹配不完整时失败。

jq '
  [
    JOIN(
      INDEX(.[].cells; .[] | select(.columnId == 7408953102493572).displayValue);
      input[];
      .cells[] | select(.columnId == 5460306864433028).displayValue;
      (.[0].cells[] | select(.columnId == 5206337428711300)) += try
        (.[1][] | select(.columnId == 5822630258337668) | del(.Column, .columnId))
    )[0]
  ]
' from.json to.json
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": "Dd Kk",
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        }
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

Demo