如何使用sed为每行首个单词添加双引号以生成合法JSON
解决方案
你可以使用如下sed命令完成转换:
# GNU sed 版本(Linux系统通用) sed -E 's/([{,][[:space:]]*)([a-zA-Z0-9_]+):/\1"\2":/g' input_file > output_file # 如需直接修改原文件,使用以下命令 sed -i -E 's/([{,][[:space:]]*)([a-zA-Z0-9_]+):/\1"\2":/g' input_file # macOS 系统 sed 版本 sed -E 's/([{,][[:space:]]*)([a-zA-Z0-9_]+):/\1"\2":/g' input_file > output_file # macOS 直接修改原文件命令 sed -i '' -E 's/([{,][[:space:]]*)([a-zA-Z0-9_]+):/\1"\2":/g' input_file
命令说明
-E参数用于启用扩展正则表达式,避免额外的转义符- 正则匹配逻辑:
- 先匹配
{或,开头,后接任意数量的空白字符(保留原有缩进格式) - 捕获冒号前的键名字符(默认匹配字母、数字、下划线,你可以根据实际键名规则调整匹配范围)
- 替换时保留原有前缀内容,给键名包裹双引号后再拼接后续内容
- 先匹配
效果验证
对你给出的示例输入执行命令后,即可得到符合要求的输出:
{"container":"proxy", "endpoint":"proxy", "exception":"ApiException"}
内容的提问来源于stack exchange,提问作者tester
相关产品推荐
相关产品推荐

