sed 一条命令批量替换 SQL 文件路径的常用方法
笔者在整理一批 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Sql Prompt 10下载与安装破解图文教程(最新推荐)
sql prompt 10是一款拥有智能提示功能的SQL Server和VS插件,,特别适合开发者不大熟悉脚本时候使用,这篇文章主要介绍了Sql Prompt 10下载与安装破解图文教程,需要的朋友可以参考下2023-03-03
安装sqlserver2022提示缺少msodbcsql.msi错误消息的解决
本文主要介绍了安装sqlserver2022提示缺少msodbcsql.msi错误消息,msoledbsql.msi文件是Microsoft OLE DB Provider for SQL Server的安装文件,下面就来介绍一下解决方法2024-05-05
SQL SERVER中SELECT和SET赋值相同点与不同点(推荐)
SELECT和SET在SQL SERVER中都可以用来对变量进行赋值,但其用法和效果在一些细节上有些不同。今天小编给大家分享SQL SERVER中SELECT和SET赋值相同点与不同点,感兴趣的朋友一起看看吧2019-12-12
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
SQLServer中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。2011-04-04


最新评论