JQ过滤输出求助:如何筛选超级用户生成CSV文件
筛选超级用户的JQ正确命令
你原本的命令已能导出所有用户的CSV数据,要筛选超级用户,需先修正之前错误命令的逻辑与语法问题:
错误原因分析
- 命令1中
select(.is_superuser = "true")误用了赋值符号=,应使用比较符号==;且若is_superuser是JSON布尔类型(而非字符串),不能用引号包裹true。 - 命令2的
.is_superuser{true}属于无效语法,不符合JQ过滤规则。
正确命令
推荐先筛选超级用户再构造输出对象(执行效率更高):
jq -r '.User[] | select(.is_superuser == true) | {Username: .username, Full_name: .full_name, Superuser: .is_superuser, Active: .is_active}' lbc.prod.xxx.yyyy.zzzz.json > lbc.prod.xxx.yyyy.zzzz_SuperUsers.csv
如果你的JSON中is_superuser是字符串类型(值为"true"),则调整为:
jq -r '.User[] | select(.is_superuser == "true") | {Username: .username, Full_name: .full_name, Superuser: .is_superuser, Active: .is_active}' lbc.prod.xxx.yyyy.zzzz.json > lbc.prod.xxx.yyyy.zzzz_SuperUsers.csv
也可以先构造对象再筛选(效率稍低):
jq -r '.User[] | {Username: .username, Full_name: .full_name, Superuser: .is_superuser, Active: .is_active} | select(.Superuser == true)' lbc.prod.xxx.yyyy.zzzz.json > lbc.prod.xxx.yyyy.zzzz_SuperUsers.csv
(注:此命令筛选的是构造后的Superuser字段,而非原数据中的is_superuser字段)
内容的提问来源于stack exchange,提问作者asthmatic_weasel
相关产品推荐
相关产品推荐

