首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用jq从json文件获取第一个ip地址以获得预期的输出

尝试使用jq从json文件获取第一个ip地址以获得预期的输出
EN

Stack Overflow用户
提问于 2022-07-30 11:31:33
回答 4查看 153关注 0票数 0

下面是我试图从json文件中获得的输出。有人能帮助获得预期的输出与代码行吗?

注意: JSON文件不能更改,我不想在输出中获得第二个ip地址。shell/bash/awk/sed程序更佳。

JSON :

{"result":[{"description": "Validate application after update for expected operation\nVM Name: fldcldswps7175 \nManaged Instance ID: i-01a2asda390b99 \nIP Address: 10.199.157.67,10.199.157.68","status":true}, {"name":"XML", "good":false}]}

输出: 10.199.157.67

试用代码: IPaddress=('.result'|grep "description"|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|sed 's/,*$//g'|tr -d ',') echo $IPaddress

EN

回答 4

Stack Overflow用户

发布于 2022-07-30 11:44:36

在标记jq时,这里有一个使用jq的解决方案。它在JSON文件中遍历到.result[0].description中的值,选择最后一个[-1]文本行,应用regex,并输出第一个[0]结果。

代码语言:javascript
复制
jq --arg regex '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' -r '
  .result[0].description | split("\n")[-1] | [scan($regex)][0]
' file.json 
代码语言:javascript
复制
10.199.157.67

演示

票数 3
EN

Stack Overflow用户

发布于 2022-07-30 11:49:21

在显示的示例和尝试中,请尝试遵循GNU grep命令。由于OP提到了外部工具库不能用于OP的系统,所以在这里使用grep代码,尽管它总是建议使用json感知的工具本身。

代码语言:javascript
复制
grep -oP '^\{"result":\[.*IP Address: \K[^,]*' Input_file

解释:使用GNU grep-oP选项,它将分别打印匹配的数据并启用PCRE regex样式。在使用regex ^\{"result":\[.*IP Address: \K[^,]*的主程序中,它将匹配从启动{"result":到字符串IP Address:的值,然后使用\K选项允许匹配发生,但确保其值被删除,以便只打印\K后面的值。然后使用[^,]*将在第一次出现之前捕获ip地址值。

注意:--它认为您的json只有一行,如注释中提到的那样。

票数 0
EN

Stack Overflow用户

发布于 2022-07-30 19:53:06

您也可以使用capture

代码语言:javascript
复制
.result[0].description | capture("Address: *(?<address>[0-9.]*)").address
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73175227

复制
相关文章

相似问题

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