首页 > 解决方案 > Bash grep JSON 响应

问题描述

这是文件中的 JSON 响应,即RGLogin.json

{"response":{"session_id":"2d48cc11ceabf28c9e92f4b677337dcd"},"response_status":200,"response_details":null}

下面的 grep 命令可以检索session_id

grep -m1 -oP '\s*"session_id"\s*:\s*"\K[^"]+' RGLogin.json

但是以下 grep 命令无法检索 response_status

grep -m1  -oP '\s*"response_status"\s*:\s*"\K[^"]+' RGLogin.json

标签: jsonbashgrep

解决方案


从意识形态上讲,解决此类问题的正确方法是使用了解数据格式的工具。即,如果它是 JSON,则必须使用 json-aware 工具(并且grep应该将 line-aware 工具用于线性/非嵌套数据结构)。

例如,对于您的 JSON 结构,使用用于 JSON 的 walk-path unix 工具提取所需的信息jtc::

bash $ <RGLogin.json jtc -w'[response_status]'
200
bash $ 

披露:我是jtc工具的创造者


推荐阅读