gpt4 book ai didi

linux - 使用 Sed 或 awk 从 curl 响应中解析出 JSON 并分配给变量供以后使用

转载 作者:行者123 更新时间:2023-12-02 16:31:17 24 4
gpt4 key购买 nike

我正在编写要在 linux 设备上运行的 bash 脚本,所以我无权安装 jq,我需要能够使用 native 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" \
--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 新变量

最佳答案

你只是弄错了大小写(ID vs interfaceId 中的 Id)并且忘记了 之后的空格:,但你很接近:

$ sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p' file
12345

使用 cat file 代替 curl 命令来展示如何将其保存到变量中,以防您不知道:

$ var=$(cat file | sed -n 's|.*"interfaceId": *"\([^"]*\)".*|\1|p')
$ echo "$var"
12345

关于linux - 使用 Sed 或 awk 从 curl 响应中解析出 JSON 并分配给变量供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63455302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com