Nav*_*ddy 1 regex json object capturing-group jq
例如,
输入:
{
"id":"abc",
"name": "name-middlenane-lastname-1"
},
{
"id":"123",
"name": "fname-flast-2"
}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"id":"abc",
"name": "name-middlename-lastname-1",
"newkey": "name-middlename-lastname"
},
{
"id":"123",
"name": "fname-flast-2",
"newkey": "fname-flast"
}
Run Code Online (Sandbox Code Playgroud)
每个对象中的文件名是一个字符串,其中包含由“-”连字符分隔的字符和数字。我需要从开头到起始数字的完整字符串。我不想要号码后面的任何内容。然后添加新字段,其键为newkey,值应提取不带数字的字符串。因此,输出应包含旧字段和新字段。
jq
解决方案:
样本input.json
:
[
{
"id": "abc",
"name": "name-middlenane-lastname-1"
},
{
"id": "123",
"name": "fname-flast-2"
}
]
Run Code Online (Sandbox Code Playgroud)
jq 'map(. + (.name | capture("(?<newkey>.+)-[0-9]+")) )' input.json
Run Code Online (Sandbox Code Playgroud)
输出:
[
{
"id": "abc",
"name": "name-middlenane-lastname-1",
"newkey": "name-middlenane-lastname"
},
{
"id": "123",
"name": "fname-flast-2",
"newkey": "fname-flast"
}
]
Run Code Online (Sandbox Code Playgroud)