这个问题在这里已有答案:
我在脚本shell中有一个变量,当我执行echo $ myvariable时。这是输出:
{"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脚本:
tenantid=$("$myvariable" | grep "tenant_id" | awk '{printf $2}')
echo $ tenantid我得到了相同的结果。
对于子网,我尝试了相同但我有相同的结果。
subnets=$(echo "$myvariable" | grep "subnets" | awk '{printf $1}')
先谢谢你们。
这似乎有效:
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 ]*"'`
我不知道你想要的格式。