需要帮助使用 jtc 或 jq 从 json 对象中删除具有特殊字符 @ 的元素
Need help deleting elements with special character @ from json object with jtc or jq
我正在尝试识别以 @t
开头的键的对象元素。我的目标是将它们一起从对象中删除。
示例输入
{
"process_state": {
"@user_id": "john smith",
"@t39ee396f50": 1,
"@t375b0311e8": 1,
"@t12dd92bf45": 1
}
}
预期输出
{
"process_state": {
"@user_id": "john smith",
}
}
我试过使用 jq 和 jtc 来实现这一点,但两者似乎都与领先的 @ 符号作斗争。我假设这是我的代码的格式问题。我可以使用通配符吗?我尝试了几种方法都没有成功。
JQ
jq'。 |=地图(select(。|包含(“@t”)|不))'
错误:无法检查字符串 ("@t") 的包含
联合训练中心
<文件 jtc -w'l:'
没有错误,但@t* 字段仍然存在于 json 对象中。
非常感谢任何帮助。
我们将使用 test("^@t")
而不是 contains("@t")
,因为我们要检查 leading @t
。但这不是您收到该错误的原因。您在 |=
的 left-hand 侧有错误的对象,并且 map
没有按照您对对象的想法进行操作。
两种解决方案:
我正在尝试识别以 @t
开头的键的对象元素。我的目标是将它们一起从对象中删除。
示例输入
{
"process_state": {
"@user_id": "john smith",
"@t39ee396f50": 1,
"@t375b0311e8": 1,
"@t12dd92bf45": 1
}
}
预期输出
{
"process_state": {
"@user_id": "john smith",
}
}
我试过使用 jq 和 jtc 来实现这一点,但两者似乎都与领先的 @ 符号作斗争。我假设这是我的代码的格式问题。我可以使用通配符吗?我尝试了几种方法都没有成功。
JQ
jq'。 |=地图(select(。|包含(“@t”)|不))'
错误:无法检查字符串 ("@t") 的包含
联合训练中心
<文件 jtc -w'
没有错误,但@t* 字段仍然存在于 json 对象中。
非常感谢任何帮助。
我们将使用 test("^@t")
而不是 contains("@t")
,因为我们要检查 leading @t
。但这不是您收到该错误的原因。您在 |=
的 left-hand 侧有错误的对象,并且 map
没有按照您对对象的想法进行操作。
两种解决方案: