#安装yum扩展源yum -y install epel-release#刷新缓存并安装yum clean allyum makecacheyum -y install jq#查看jq版本jq --version



#命令行临时格式化echo '{"name":"ops","ip":"192.168.2.10","status":"online"}' | jq .#本地文件格式化cat demo.json | jq .

#提取单层字段echo '{"name":"web1","ip":"192.168.2.10","port":8888}' | jq '.name'#提取嵌套字段echo '{"server":{"ip":"192.168.2.10","name":"web1"}}' | jq '.server.ip'


参数-r代表原始输出,避免引号影响脚本执行:echo '{"test":"web1.com"}' | jq -r '.test'
echo '{"server":{"ip":"192.168.2.10","name":"web1","env":"test"}}' | jq -r '.server.ip'
jq -r '.[].hostname' demo.json
. = 根节点[] = 遍历数组所有元素.hostname =取每个元素的 hostname字段#同时提取服务器名称和ipjq -r '.[] | .hostname + "," + .ip' demo.json

jq -r '.[0]' demo.json
[]表示数组0 是第一个元素的下标jq '. | length' demo.json
length:jq 内置函数,返回数组的元素个数 。#筛选在线服务节点jq '.[] | select(.status == "online")' demo.json

.[]:遍历数组里每一个对象|:把每个对象传给下一个过滤条件select(条件):只保留满足条件的对象.status == "online":条件 = 状态是在线#在线状态+端口大于8080jq '.[] | select(.status=="online" and .port > 8080)' demo.json

jq -r '.[] | select(.status=="online") | .ip' demo.json
cat app.log | jq -r 'select(.level=="error") | .message'
jq -c . demo.json
state="offline"jq --arg val "$state" '.[] | select(.status == $val)' demo.json
以下命令,能覆盖 95%日常场景
-r #原始纯文本输出,去除双引号-c #压缩JSON为单行. #格式化美化JSONselect #条件过滤筛选--arg #安全传递自定义变量
jq是解析json结构化数据无可替代的工具,完胜 grep/awk 普通文本解析;
可用于api调试、容器/docker/k8s 信息抓取、json日志分析、配置文件解析;
掌握格式化、字段提取、数组遍历、select 过滤、变量传参即可覆盖大部分运维日常场景;
后续可结合k8s、docker实战,实现容器容器元数据、pod信息快速筛选。