当前位置: 代码网 > it编程>数据库>MsSqlserver > sed 一条命令批量替换 SQL 文件路径的常用方法

sed 一条命令批量替换 SQL 文件路径的常用方法

2026年09月18日 MsSqlserver 我要评论
笔者在整理一批 oracle 导入脚本时,遇到一个很常见的场景:多个.sql文件里都写死了同一个绝对路径,需要统一改成相对路径。手动逐个改太慢,用sed一条命令就能搞定。01 | 先看清要改什么先用g

笔者在整理一批 oracle 导入脚本时,遇到一个很常见的场景:多个 .sql 文件里都写死了同一个绝对路径,需要统一改成相对路径。手动逐个改太慢,用 sed 一条命令就能搞定。

01 | 先看清要改什么

先用 grep 确认问题范围:

grep -n "load_csv" *.sql

结果发现 11 个文件里,第 12 行都写着类似这样的绝对路径:

load dnmaterialbinddetail /users/wanzheng/src/ontoforge/database/oracle/jylt/load_csv/dnmaterialbinddetail.csv

路径前缀完全一致,只有文件名不同。这种“前缀相同、批量替换”的场景,正是 sed 的强项。

02 | 一条命令完成替换

sed -i 's|/users/wanzheng/src/ontoforge/database/oracle/jylt/load_csv/|../load_csv/|g' *.sql

执行后再用 grep 验证,所有文件都变成了相对路径:

load dnmaterialbinddetail ../load_csv/dnmaterialbinddetail.csv

03 | 命令拆解

① -i:直接改原文件

-i 表示 in-place,替换结果直接写回原文件,不需要重定向或临时文件。注意它会覆盖原内容,执行前最好确认文件已纳入版本管理。

② s|old|new|g:全局替换

s 是替换指令,g 表示一行内所有匹配都替换,而不是只换第一处。

这里特意用 | 作为分隔符,而不是常见的 /。因为路径里本身就有大量斜杠,用 / 做分隔符需要不断转义,可读性很差;换成 | 后整条命令一目了然。

③ *.sql:作用于所有匹配文件

sed 会依次处理当前目录下所有 .sql 文件,一次完成批量修改。

04 | 小结

面对“多个文件、同一段文本、批量替换”的需求,sed -i 配合合适的分隔符,往往一条命令就能解决。关键点有两个:先用 grep 确认范围,再用 | 避开路径斜杠带来的转义麻烦。

到此这篇关于sed 一条命令批量替换 sql 文件路径的文章就介绍到这了,更多相关sed 命令批量替换 sql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com