You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Shell脚本:用Regex将JSON中name字段的snake case转为camel case

解决Shell中JSON字段snake case转camel case的问题

原始JSON输入:

[{"name":"THE_NAME1","value":"Value_1"}, {"name":"THE_NAME_NEW2","value":"Value_2"}]

期望输出:

[{"name":"theName1","value":"Value_1"}, {"name":"theNameNew2","value":"Value_2"}]

方法1:使用sed(基于正则表达式)

sed适合简单场景下的文本替换,通过两步正则转换实现需求:

sed -E '
  # 将name字段的所有值转为小写
  s/"name":"([^"]+)"/"name":"\L\1"/g;
  # 将下划线后的小写字母转为大写,并删除下划线
  s/_([a-z])/\U\1/g
' input.json

注意:sed是纯文本处理工具,如果JSON格式存在空格、换行或者name值包含特殊字符(如引号),可能出现匹配错误。

方法2:使用jq(更可靠的JSON处理工具)

jq是专门的JSON处理工具,能避免纯文本正则处理JSON的兼容性问题:

jq '
  .[] |= (
    .name = (.name | ascii_downcase | gsub("_([a-z])"; "\u\1"))
  )
' input.json

解释:

  • .[] 遍历数组中的每个对象
  • .name | ascii_downcase 将name字段值转为全小写
  • gsub("_([a-z])"; "\u\1") 匹配下划线+小写字母,替换为对应的大写字母(自动删除下划线)
  • 整个操作仅修改name字段,value字段完全保持原样

内容的提问来源于stack exchange,提问作者Giridhar Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:48:17