例如,
输入:
{
"id":"abc",
"name": "name-middlenane-lastname-1"
},
{
"id":"123",
"name": "fname-flast-2"
}
响应:
{
"id":"abc",
"name": "name-middlename-lastname-1",
"newkey": "name-middlename-lastname"
},
{
"id":"123",
"name": "fname-flast-2",
"newkey": "fname-flast"
}
每个对象中的字段名称是一个字符串,其中的字符和数字用“ - ”连字符分隔。我需要从开头到起始编号的完整字符串。我不想要这个号码之后的任何东西。然后使用键 newkey 添加 new 字段,并且应该提取不带数字的字符串值。因此,输出应包含旧字段和新字段。
答案 0 :(得分:1)
jq
解决方案:
示例input.json
:
[
{
"id": "abc",
"name": "name-middlenane-lastname-1"
},
{
"id": "123",
"name": "fname-flast-2"
}
]
jq 'map(. + (.name | capture("(?<newkey>.+)-[0-9]+")) )' input.json
输出:
[
{
"id": "abc",
"name": "name-middlenane-lastname-1",
"newkey": "name-middlenane-lastname"
},
{
"id": "123",
"name": "fname-flast-2",
"newkey": "fname-flast"
}
]