regex 正则表达式函数查找字符串的一部分

aydmsdu9  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(143)

我需要帮助建立一个正则表达式规则,以找到一些[的文本文件。
这是一个文本的例子。它是一个Json,但是我不能使用它,因为我使用的程序的限制。

{
    "event":[
        "ONIMBOTMESSAGEADD"
    ],
    "data[BOT][123][BOT_ID]":[
        "123"
    ]
}

我需要找到一个与"data[BOT][123][BOT_ID]":[行匹配的正则表达式,并找到它上面的所有[。objectve是用下划线替换它,这样我就得到了这样的结果:

{
    "event":[
        "ONIMBOTMESSAGEADD"
    ],
    "data_BOT_123_BOT_ID":[
        "123"
    ]
}

我不能删除所有特殊字符,因为这会破坏json结构。
我找到了一种方法,可以使用下面的规则选择需要更正的每一行,但无法对结果应用另一条规则。我不知道该如何操作。

pattern = (("data\[[a-zA-Z]+]\[[0-9]+]\[([a-zA-Z]+_[a-zA-Z]+)\]":\[)|("data\[[A-Z]+]\[([A-Z]+(_|)[A-Z]+)\]":\[)|("data\[[A-Z]+]\[([A-Z]+(_|)[A-Z]+(_|)[A-Z]+)\]":\[))

有什么解决的办法吗?先谢谢你了。

mkh04yzy

mkh04yzy1#

仅用data替换奇怪的data*密钥:

jq '.["data"] = .[keys[0]] | del(.[keys[1]])' file
{
  "event": [
    "ONIMBOTMESSAGEADD"
  ],
  "data": [
    "123"
  ]
}

相关问题