如何使用Bash从JSON数据中提取邮箱字段值?
在Bash中提取JSON里的邮箱字段内容
如果你要在Bash里提取JSON中的邮箱字段,最靠谱的工具绝对是jq——专门为处理JSON设计的命令行工具,几乎能应对所有JSON格式的情况。
方法一:使用jq(推荐)
假设你的JSON文件(比如data.json)内容长这样:
{ "user": "Alice", "email": "alice@domain.com", "role": "admin" }
直接用以下命令就能提取出邮箱:
jq -r '.email' data.json
-r参数是让jq输出原始字符串(不带引号),如果不加这个参数,输出会带双引号。- 如果你的JSON数据是通过管道传递过来的(比如从其他命令输出),可以这样用:
cat data.json | jq -r '.email'
方法二:无jq时用awk/sed(仅适用于格式规整的JSON)
如果你的系统上没有jq(比如某些极简环境),可以用文本处理工具临时解决,但要注意:这种方法只适合JSON格式非常规整的情况(比如邮箱字段单独一行,格式是"email": "xxx@xxx.com")。
用awk的例子:
awk -F'"' '/"email":/ {print $4}' data.json
这里用双引号作为分隔符,找到包含"email":的行,然后打印第4个字段(刚好是邮箱内容)。
或者用sed:
sed -n 's/.*"email": "\(.*\)".*/\1/p' data.json
这个命令会匹配包含"email": "..."的行,捕获引号里的邮箱内容并输出。
⚠️ 注意:文本工具(awk/sed)不是为解析JSON设计的,如果你的JSON有换行变化、字段顺序调整或者嵌套结构,这些方法很容易失效,所以能装jq的话一定要用jq!
内容的提问来源于stack exchange,提问作者Omar Amaoun
相关产品推荐
相关产品推荐

