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

如何用sed替换SQL语句中的DEFINER用户与主机信息?

用sed替换SQL文件中的DEFINER字段

问题分析

你之前的sed命令正则逻辑有误,\@``无法精准匹配DEFINER=用户名@地址`的结构,导致替换失效。

正确替换命令

通用写法(兼容多数sed版本)

sed 's/DEFINER=`[^`]*`@`[^`]*`/DEFINER=`dbadmin`@`%`/g' /tmp/vwdefTest.txt
  • 正则说明:
    • DEFINER=:匹配字段前缀,确保只替换DEFINER相关内容
    • [^]*:匹配任意数量的非字符,精准捕获用户名和地址部分
    • 替换目标直接指定为DEFINER=dbadmin@%`,覆盖原有内容

GNU sed优化写法(Linux系统)

启用扩展正则表达式,匹配非空的用户名/地址(更严谨):

sed -E 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=`dbadmin`@`%`/g' /tmp/vwdefTest.txt

原地修改文件(可选)

如果需要直接修改原文件而非输出到终端:

  • GNU sed(Linux):
    sed -i -E 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=`dbadmin`@`%`/g' /tmp/vwdefTest.txt
    
  • BSD sed(macOS):
    sed -i '' 's/DEFINER=`[^`]*`@`[^`]*`/DEFINER=`dbadmin`@`%`/g' /tmp/vwdefTest.txt
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:24:58