Regex Grep模式匹配后的下一个单词

Regex Grep模式匹配后的下一个单词,regex,sed,grep,Regex,Sed,Grep,我试图从下面的响应中获取grep/sed输出:name:test\u backup\u 1 {"backups":[{"name":"test_backup_1","status":"CORRUPTED","creationTime":"2019-11-08T15:03:49.460","id":"test_backup_1"}]} 我一直在尝试以下grep-Eo“name:\w+\”的变体,但没有乐趣 我不确定使用grep或sed是否更容易实现这一点 我运行它的方式是卷曲来自服务器的响应并将

我试图从下面的响应中获取grep/sed输出:name:test\u backup\u 1

{"backups":[{"name":"test_backup_1","status":"CORRUPTED","creationTime":"2019-11-08T15:03:49.460","id":"test_backup_1"}]}
我一直在尝试以下grep-Eo“name:\w+\”的变体,但没有乐趣

我不确定使用grep或sed是否更容易实现这一点

我运行它的方式是卷曲来自服务器的响应并将其保存到一个局部变量,然后回显该变量并使用grep/sed管道

我正在运行的示例
echo${view\u backup}grep-Eo'name:\w+\'

确保在grep之前将文件转换为一行

从你的卷发里抽出来

echo `curl --silent https://someurl | tr -d '\n' | grep  -oP "(?<=name\":\")[^\"]+"`
会回来的

测试备份1

如果你想要更多的变量,你可以像在这个例子中一样链接-oP grep,在这个例子中,我得到了一些关于丹麦车牌bt419329的数据

curl --silent https://www.tjekbil.dk/api/v2/nummerplade/bt41932 | grep -oP -m 1 "(?<=\"RegNr\":\")[^\"]+|(?<=\"MaerkeTypeNavn\":\")[^\"]+|(?<=\"MaksimumHastighed\":)[^,]+"| tr '\n' ' '
返回


BT41932斯柯达218参考@sundeep答案

grep-Eo'名称:[^]+'


产生了预期的输出

您是否考虑过解析JSON?解析JSON对我有什么帮助?上面的响应来自服务器的一个curl,我只需要检索名称如果jq可用,请尝试:jq-r.backups[].name input.json,它将生成test_backup_1。将在其上运行的服务器上不会安装jq,然后尝试进一步调试它。。例如,这是否有效?a='{backups:[{name:test_backup_1,stat',后跟echo${a}| grep-Eo'name:[^]+'…依此类推。。