在.sql文件中查找和替换文本

8
我有许多位于子文件夹中的.sql文件。目前我正在手动打开它们,搜索"OLDSERVERNAME"并用"NEWSERVERNAME"替换它们(我正在进行迁移)。必须有更快的方法来完成这个任务。我尝试使用FART,但我想我没有做对。 这是我尝试的方法(在主文件夹中):
fart -i -p -c *.sql OLDSERVERNAME NEWSERVERNAME

我能否使用Unix工具来完成这个任务?
2个回答

14

你可以使用sed来实现。 sed代表流编辑器Stream Editor

sed -i 's/OLDSERVERNAME/NEWSERVERNAME/g' *.sql
  • -i选项将进行文件内替换。
  • g表示全局替换。因此,如果一行中有多个OLDSERVERNAME实例,则它们将被替换为NEWSERVERNAME。
  • *.sql将传递所有以 .sql 扩展名结尾的文件。

查阅 sed man 手册获取更多详细信息。


我需要安装什么才能使用SED吗?我收到了一个“'sed'不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误。谢谢。 - Sarah
我已经尝试安装它,并将sed.exe和.dll文件的位置添加到Path环境变量中,但仍然遇到相同的错误。SED在64位机器上工作吗? - Sarah

2
在MacOS上,我需要添加一个备份文件扩展名。
sed -i '.bak''s/OLDSERVERNAME/NEWSERVERNAME/g' *.sql

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接