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

如何用sed或awk批量替换from table(表名)为from 表名并保留分号?

解决方案:用sed或awk批量修改SQL语句格式

一、使用sed命令

sed适合快速做文本替换,用正则匹配目标格式并完成修改:

sed 's/\bfrom table(\([^)]*\))/from \1/g' your_sql_file.sql

命令说明:

  • \b:匹配单词边界,避免误匹配fromtable这类连写的异常情况
  • table(\([^)]*\)):捕获table()内部的表名([^)]*表示匹配除右括号外的所有字符)
  • from \1:将匹配到的内容替换为from加上捕获到的表名
  • 若要直接修改原文件,添加-i参数(macOS系统需写成-i ''):
sed -i 's/\bfrom table(\([^)]*\))/from \1/g' your_sql_file.sql

二、使用awk命令

awk的gsub函数支持全局文本替换,同样能实现需求:

awk '{gsub(/from table\(([^)]*)\)/, "from \\1"); print}' your_sql_file.sql > modified_sql.sql

命令说明:

  • gsub(/正则/, 替换内容):全局替换每行中匹配正则的内容
  • \\1对应正则里捕获到的表名,awk里转义反斜杠需要写两个
  • 命令会把修改后的内容输出到modified_sql.sql,可检查无误后再覆盖原文件

效果验证

用你提供的示例代码测试,两种命令都能精准将from table(paper_table)改成from paper_table,from table(cheese_table) t;改成from cheese_table t;,同时完整保留行尾的分号和注释。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:48:09