如何用sed/awk屏蔽JSON文件中指定字段的敏感值?
屏蔽JSON中指定字段的敏感值
处理JSON这类结构化数据,优先使用专门的JSON处理工具(如jq),比sed/awk更可靠,不会因为格式变化(比如字段换行、空格调整)导致出错。
方案一:使用jq(推荐)
jq是专门用于JSON处理的命令行工具,语法简洁且能保证JSON结构始终合法。执行以下命令即可将passkey字段的值替换为****:
jq '.PLUSDATA.global.passkey = "****"' input.json > output.json
如果需要直接修改原文件(部分jq版本支持此写法):
jq --arg infile input.json '.PLUSDATA.global.passkey = "****"' "$infile" > tmp.$$ && mv tmp.$$ "$infile"
方案二:使用sed(仅适用于固定格式的JSON)
如果必须使用sed,需要针对你提供的固定格式JSON编写规则,命令如下:
sed -E 's/("passkey": ")[^"]*(")/\1****\2/' input.json > output.json
注意事项:
-E参数启用扩展正则表达式,减少符号转义的复杂度- 正则规则会匹配
"passkey": "开头的内容,捕获所有非引号的敏感值,最后替换为"passkey": "****" - 局限性:如果
passkey字段的格式发生变化(比如值包含转义引号、字段换行显示),该命令会失效
内容的提问来源于stack exchange,提问作者Dmitry K
相关产品推荐
相关产品推荐

