如何在 shell 脚本中查找特定键并替换该值?

如何在 shell 脚本中查找特定键并替换该值?

我有一个包含以下文本的 JSON 文件

{"category": "yyy", "id": "xxxyyy", "environment": "fff", "client": "000000", "user": "Alex", "log_time": "xxx", "source_context": null}

user我需要找到该文件中的密钥并将其值替换AlexXXXX完全相同的大小(Alex= XXXXTom= XXX)。我尝试使用sed命令,但无法正确执行。

答案1

您不应该使用面向文本的解析器(例如sed.相反,请使用 JSON 感知解析器,例如jq.

如果您的系统上有此工具,您可以简单地执行以下操作:

 jq '.user |= gsub(".";"X")' file

这会将键的所有字符串替换user为相同数量的X字符。

如果你jq不支持gsub,你可以使用这样的东西:

jq '.user |= ([range(0;length)]|.[]="X"|add)' file

相关内容