Linux 使用Sed或awk从curl响应中解析JSON,并将其分配给变量以供以后使用
我正在编写一个在linux设备上运行的bash脚本,因此我没有安装jq的权限,我需要能够使用本机linux工具Linux 使用Sed或awk从curl响应中解析JSON,并将其分配给变量以供以后使用,linux,unix,curl,awk,sed,Linux,Unix,Curl,Awk,Sed,我正在编写一个在linux设备上运行的bash脚本,因此我没有安装jq的权限,我需要能够使用本机linux工具 curl --location --request POST "https://api-mp.meraki.com/api/v1/networks/12345/switch/stacks/12345/routing/interfaces" \ --header "X-Cisco-Meraki-API-Key: 123key" \ --he
curl --location --request POST "https://api-mp.meraki.com/api/v1/networks/12345/switch/stacks/12345/routing/interfaces" \
--header "X-Cisco-Meraki-API-Key: 123key" \
--header "Content-Type: application/json" \
--data '{
"name": "L3 int",
"subnet": "192.168.249.0/24",
"interfaceIp": "192.168.249.2",
"multicastRouting": "disabled",
"vlanId": 140,
"ospfSettings": {
"area": "0",
"cost": 1,
"isPassiveEnabled": true
}
}' | sed -n 's|.*"interfaceID":"\([^"]*\)".*|\1|p' > $newVar
服务器的响应返回以下内容:
{
"interfaceId": "12345",
"name": "PA L3 DR Int",
"subnet": "192.168.249.0/24",
"interfaceIp": "192.168.249.2",
"multicastRouting": "disabled",
"vlanId": 140,
"ospfSettings": {
"area": "0",
"cost": 1,
"isPassiveEnabled": true
}
}
然后,我需要能够访问查询字符串参数中的interfaceID新变量您刚刚在
interfaceID
中得到了错误的大小写(ID
vsID
),并且忘记了:
之后的空格,但是您很接近:
$ sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p' file
12345
使用cat file
代替curl
命令显示如何将其保存到变量,以防您不知道:
$ var=$(cat file | sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p')
$ echo "$var"
12345
您刚刚把案例搞错了(
ID
vsID
在interfaceId
中),忘记了后面的空格:
,但您很接近:
$ sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p' file
12345
使用cat file
代替curl
命令显示如何将其保存到变量,以防您不知道:
$ var=$(cat file | sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p')
$ echo "$var"
12345
你能试试下面的吗。在link中测试成功
你能试试下面的吗。在link中测试成功