使用POSIX工具解析JSON字符串,提取state与config内容
提取JSON中state和config字段的Shell命令
直接用正则(sed/grep)处理JSON很容易出错——JSON的嵌套结构、空格变化都会让正则匹配失效,推荐用专门的JSON处理工具jq,这是Shell环境下处理JSON的标准工具,先确保系统已安装(Debian/Ubuntu用apt install jq,CentOS/RHEL用yum install jq)。
从API响应变量$RESPONSE提取
提取state内容到变量或文件
# 提取到变量 STATE_CONTENT=$(echo "$RESPONSE" | jq '.state') # 查看结果 echo "$STATE_CONTENT" # 写入文件 echo "$STATE_CONTENT" > /tmp/state.json
提取config内容到变量或文件
# 提取到变量 CONFIG_CONTENT=$(echo "$RESPONSE" | jq '.config') # 查看结果 echo "$CONFIG_CONTENT" # 写入文件 echo "$CONFIG_CONTENT" > /tmp/config.json
从本地文件/tmp/a.json提取
如果已经把响应保存到文件,直接用jq读取文件更高效:
# 提取state到文件 jq '.state' /tmp/a.json > /tmp/state.json # 提取config到文件 jq '.config' /tmp/a.json > /tmp/config.json
为什么之前的命令失败?
- sed命令问题:正则里的
$state是Shell变量引用,且正则写法完全没考虑JSON的嵌套结构,无法匹配到正确内容。 - grep命令问题:引号未转义导致语法错误(
{"state":.*}里的双引号会被Shell解析),就算转义后,.*会匹配到字符串结尾,无法精准截断到state对象的闭合大括号,嵌套结构下更会失效。
内容的提问来源于stack exchange,提问作者nm-happy-to-code
相关产品推荐
相关产品推荐

