我有一个巨大的 SQL 文件在服务器上执行。转储来自我的机器,其中有一些与我的机器相关的设置。所以基本上,我希望每次出现"c://temp"
被替换为"//home//some//blah"
如何从命令行完成此操作?
sed对于大文件来说是一个不错的选择。
sed -i.bak -e 's%C://temp%//home//some//blah%' large_file.sql
这是一个不错的选择,因为不需要立即读取整个文件来更改它。引用手册:
流编辑器用于执行
输入的基本文本转换
流(文件或来自
管道)。虽然在某些方面相似
到允许脚本化的编辑器
编辑(例如 ed),sed 的工作原理是
只经过一次
输入,因此更多
高效的。但这是 sed 的能力
过滤管道中的文本
它特别区别于
其他类型的编辑器。
相关手册部分是here。下面是一个小解释
-i.bak 启用就地编辑,留下带有 .bak 扩展名的备份副本
s%foo%bar% 使用 s,替换命令,其中
替换第一个字符串的匹配项
在 % 符号“foo”之间,表示第二个
字符串,“酒吧”。通常写为 s//
但因为你的弦有很多
斜杠,这样更方便
将它们更改为其他内容,以便您
避免必须逃避他们。
Example
vinko@mithril:~$ sed -i.bak -e 's%C://temp%//home//some//blah%' a.txt
vinko@mithril:~$ more a.txt
//home//some//blah
D://temp
//home//some//blah
D://temp
vinko@mithril:~$ more a.txt.bak
C://temp
D://temp
C://temp
D://temp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)