您的位置:首页 > 运维架构 > Shell

用shell中用jq解析json遇到compile error

2017-12-05 23:18 621 查看
前几天接到任务,需要完善一段shell写的测试脚本,其中的问题最后归结成这样一个问题,已知如下json格式的字符串

{
"up": true,
"pending": false,
"available": true,
"autostart": true,
"dynamic": false,
"uptime": 5217,
"ipv4-address": [
{
"address": "192.168.59.150",
"mask": 24
}
],
"ipv6-address": [

],
"ipv6-prefix": [

],
"ipv6-prefix-assignment": [

],
"route": [

]
}

目标是需要解析获得ipv4-address.address的值,网上搜了下,一般shell命令行里推荐使用jq,试用后发现一个有意思的问题,仿佛jq不太喜欢field name中间有dash,也就是那一小段横线,执行 cat data.json > jq -r '.ipv4-address.address' 就会报compile error。

进一步搜索,用bing的国际版终于找到相关页面,见https://github.com/stedolan/jq/issues/38,也即这是jq的bug,同时也给出了可用的解决方案,也即:

cat data.json > jq -r '.["ipv4-address"][0].address'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: