我有这个json字符串:
{
"head": {
"url": "foobar;myid=E50DAA932C22739F92BB250C14365440"
}
}
在外壳上使用jq时,我得到url
的内容作为数组:
jq -r '.head.url | split(";")[] '
这将返回:
foobar
myid=E50DAA932C22739F92BB250C14365440
我的目标是仅在=
之后获得ID(E50DA ...)。我可以简单地使用[1]
获取第二个元素,然后使用正则表达式获取=
之后的部分。
但是元素的顺序并不安全,我敢肯定,jq已经有了更好的方法,我不知道。也许创建元素的映射并使用myid
作为获取值(E50 ...)的键?
谢谢您的输入!
答案 0 :(得分:1)
使用jq
的{{1}}后向积极态度来输出match()
之后的内容:
myid=
或将$ jq -r '.head.url | split(";")[] | match("(?<=myid=).*;"g").string' file
E50DAA932C22739F92BB250C14365440
和split()
放在match()
之后,直到结尾或myid=
:
;
答案 1 :(得分:0)
您是否只需要使用jq
?您可以使用grep
和cut
进一步处理输出:
jq '.head.url | split(";")[]' | grep '^myid=' | cut -d= -f2