jq
JQ
jq 是个非常强大的处理 JSON 数据的命令行工具。
安装
Linux
1
yum install jq
macOS
1
brew install jq
使用示例
注意:示例数据不是一段json数据,它的每一行都是一条json数据。每一行都会处理一次。
- 格式化
这里的
.表示当前JSON对象
1 | curl -s https://kekek.cc/static/jq.json | jq . |
- 查询
查询
remote_addr为187.141.142.230的用户
1 | curl -s https://kekek.cc/static/jq.json | jq 'select (.["remote_addr"] == "187.141.142.230")' |
select(boolean_expression) 为查询语句,.["remote_addr"] 表示取对象的remote_addr属性(除了可以用.[]取值还可以直接.取值,前者可以处理特殊字符的情况)。 == 表示等于。
查询
method为GET的请求,并且status为200
1 | curl -s https://kekek.cc/static/jq.json | jq 'select (.["method"] == "GET" and .status == 200)' |
- 管道
1 | interface AccessLog { |
1 | curl -s https://kekek.cc/static/jq.json | jq '. | {ip: .["remote_addr"], method: .method, url: .["request_uri"]}' |
这里使用了管道符 | 可以多次处理结果
- 输出csv格式
csv 的输入要求必须是一个数组
1 | curl -s https://kekek.cc/static/jq.json | jq '. | [.["remote_addr"], .method, .status]] | @csv' |
- 数组
.[] 表示取整个数组,一般配合管道符号一起使用 .[] | {ip: .["remote_addr"], method: .method, url: .["request_uri"]}
.[0] 表示取数组的第一个元素
参考
本站采用「署名 4.0 国际」进行许可。