如何使用Grep从JSON中提取is_verified为true的用户名
从JSON中提取已验证用户的用户名
嘿,我来帮你搞定这个问题!用grep单独处理JSON确实容易踩坑——毕竟JSON的结构可能有换行、空格变化,正则很难完美匹配。下面给你几个靠谱的解决方案:
方法1:用jq(最推荐,专门处理JSON的工具)
jq是处理JSON的神器,语法清晰还能应对各种JSON格式变化,几乎是Linux/macOS系统的标配(如果没有的话,用包管理器比如apt install jq或brew install jq就能安装)。
运行这条命令就能直接提取目标用户名:
jq -r '.[] | select(.is_verified == true) | .username' your_file.json
.[]:遍历JSON数组里的每一个用户对象select(.is_verified == true):筛选出is_verified字段值为true的对象.username:提取这些对象的username字段-r:输出原始字符串(不带双引号)
方法2:用Python脚本(兼容性拉满)
如果你的系统没有jq,用Python脚本是最稳妥的选择,不管JSON格式怎么排版都能正确解析:
创建一个名为extract_verified_users.py的脚本:
import json # 替换成你的JSON文件路径 with open('your_file.json', 'r', encoding='utf-8') as file: users_data = json.load(file) # 遍历并提取符合条件的用户名 for user in users_data: if user.get('is_verified') is True: print(user.get('username'))
然后运行脚本:
python extract_verified_users.py
方法3:用grep+awk(临时应急方案)
这个方法依赖JSON的格式比较规整(比如username和is_verified的位置相对固定),适合临时快速处理:
grep -B3 '"is_verified": true' your_file.json | grep '"username"' | awk -F'"' '{print $4}'
-B3:表示取匹配到"is_verified": true的行前面3行(如果你的JSON里username在is_verified后面,就换成-A3取后面3行,根据实际情况调整数字)grep '"username"':筛选出包含username的行awk -F'"' '{print $4}':按双引号分割字符串,提取第4个部分(也就是用户名内容)
不过要注意,这个方法不够健壮,如果JSON的字段顺序或换行方式变了,可能就失效了,所以还是优先用前两种方法。
内容的提问来源于stack exchange,提问作者Terrisa mark
相关产品推荐
相关产品推荐

