首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过shell脚本从输出中提取id

通过shell脚本从输出中提取id
EN

Stack Overflow用户
提问于 2019-03-21 03:38:12
回答 1查看 227关注 0票数 0

当我执行echo $myvariable时,我在脚本外壳中有一个变量。这是输出:

代码语言:javascript
复制
         {"networks":[{"status":"ACTIVE","router:external":true,"availability_zone_hints":[],"availability_zones":["nova"],
"ipv4_address_scope":null,"description":"",
"port_security_enabled":true,**"subnets":["56efe610-32af-4f03-a73d-14bcbf1c9ae1","18ca945c-8868-4549-b725-e11f04612663"],**
    "updated_at":"2018-02-26T04:55:25Z",
    *"tenant_id":"187d635aec4c43fe8e8918afb3a5c82e",*
    "created_at":"2018-02-26T04:55:12Z",
    "tags":[],"ipv6_address_scope":null,
    "mtu":1500,"is_default":true,"revision_number":7,
    "admin_state_up":true,"shared":false,
    "project_id":"187d635aec4c43fe8e8918afb3a5c82e",
    "id":"7697d4c6-5b4c-4ea9-a1d6-af7d7f716f2b","name":"public"

然后,我尝试提取子网id (56efe610-32af-4f03-a73d-14bcbf1c9ae1 and 18ca945c-8868-4549-b725-e11f04612663)和tenant_id (187d635aec4c43fe8e8918afb3a5c82e)。

我为tenant_id尝试了这个shell脚本:

代码语言:javascript
复制
tenantid=$("$myvariable" | grep "tenant_id" | awk '{printf $2}')

echo $tenantid我得到了同样的结果。

对于子网,我尝试了相同的方法,但得到了相同的结果。

代码语言:javascript
复制
subnets=$(echo "$myvariable" | grep "subnets" | awk '{printf $1}')

提前谢谢各位。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 04:20:50

这似乎起作用了:

代码语言:javascript
复制
subnets=`echo $myvariable | egrep -o '"subnets":\[[-_A-Za-z0-9, "]*\]' | egrep -o '\[[-_A-Za-z0-9, "]*\]'`
tenant_id=`echo $myvariable | egrep -o '"tenant_id":"[-_A-Za-z0-9 ]*",'  | egrep -o ':"[-_A-Za-z0-9 ]*"' | egrep -o '"[-_A-Za-z0-9 ]*"'`

我不知道你到底想要哪种格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55268930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档