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

如何用sed命令替换JSON数组中指定对象的text键值对?

用sed替换JSON中特定对象的text值

sed本身不是专门处理JSON的工具,但可以通过上下文范围匹配实现你要的替换操作,前提是你的JSON是格式化(换行缩进)的结构。

可行的sed命令

假设你的File.json结构类似这样(每个对象单独换行,}作为对象结束标记):

{
"texts": [
{
"aliasName": "otherScreen",
"text": "Old Text"
},
{
"aliasName": "versionScreen",
"text": "V01_08_17"
}
]
}

执行以下命令直接修改文件:

sed -i '/"aliasName": "versionScreen"/,/}/s/"text": "V01_08_17"/"text": "Customized String"/' File.json

命令解释

  • /\"aliasName\": \"versionScreen\"/,/}/:定义匹配范围——从包含目标aliasName的行开始,直到下一个}(当前JSON对象的结束行)
  • s/原text值/新text值/:在上述范围内执行文本替换,只修改目标对象里的text字段

注意事项

  1. 如果你的JSON是压缩成一行的格式,先格式化再处理:
    python -m json.tool File.json > formatted_File.json
    
    处理完成后可以再压缩回去(可选)。
  2. 如果存在多个aliasName为versionScreen的对象,这个命令会替换所有匹配对象的text值,需确保目标对象唯一。
  3. 若JSON结构更复杂(比如嵌套多层),sed的上下文匹配可能失效,此时更推荐用专门的JSON处理工具jq,示例命令:
    jq '.texts[] |= (select(.aliasName == "versionScreen") | .text = "Customized String")' File.json > updated_File.json
    

内容的提问来源于stack exchange,提问作者Ram PG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:12:14