使用正则表达式查找和删除JSON代码

ss2ws0br  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(147)

我需要删除超过100,000标签在一个项目与点火。我决定最好的方法是下载文件的json,并删除不同设备中一致标签的所有示例。示例:我需要在数百个设备中删除此标记(和其他标记),它们将与FV5003接受的所有其他标记相同,其中可能是PP2340或AG7698。

{
              "valueSource": "opc",
              "opcItemPath": "ns\u003d1;s\u003d[PPD]FV5003_HOA.State.IO_Open",
              "dataType": "Boolean",
              "name": "IO_Open",
              "tagType": "AtomicTag",
              "opcServer": "Ignition OPC UA Server"
            },

有没有一种方法可以删除所有这样的示例,使FV5003成为正则表达式中的通配符。我对正则表达式没有任何经验。我也在用vscode。
任何帮助将是伟大的,谢谢。

uxhixvfz

uxhixvfz1#

jq '
  del(
    .. |
    select(type=="object") |
    select(has("opcItemPath")) |
    select(
      .opcItemPath|
      test("\\Ans\u003d1;s\u003d\\[PPD\\].*_HOA.State.IO_Open\\Z")
    )
  )
' input.json
  • ..-走结构
  • select
  • 对象
  • 包含名为opcItemPath的属性
  • 其值与test正则表达式匹配
  • del埃特他们

或者,“删除括号内的所有内容”:

jq '
  (
    .. |
    select(
      .opcItemPath |
      test("\\Ans\u003d1;s\u003d\\[PPD\\].*_HOA.State.IO_Open\\Z")
    )?
  ) |= {}
' input.json
  • |=-将选定对象更新为空对象{}
  • ?-丢弃可能因省略前两个select筛选器而产生的错误

相关问题