linux如何在多个文件中替换某个字符串
来源:互联网 发布:centos squid 编辑:程序博客网 时间:2024/05/16 19:39
1 vim
假定你有个变量名为 "x_cnt" 而你要把他改为 "x_counter"。
这个变量在多个 C 文件都被用到了。你需要在所有文件中作此改动。你得这么做。
把所有相关文件放进参数列表:
:args *.c
这个命令会找到所有的 C 文件并编辑其中的第一个。
现在你可以对所有这些文件执行置换命令:
:argdo %s/\<x_cnt\>/x_counter/ge | update
命令 ":argdo" 把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。
作为参数的替换命令 "%s" 作用于所有文本行。它用 "\<x_cnt\>" 来查找"x_cnt"。
"\<" 和 "\>" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 或"x_cnt2"。
替换命令的标记中包含 "g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"。
标记 "e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。
否则 ":argdo" 命令就会在遇到第一个找不到 "x_cnt" 的文件时中断。
字符 "|" 分隔两条命令。后面的 "update" 命令将那些有改动的文件存盘。
如果没有 "x_cnt" 被改成 "x_counter",这个命令什么也不做。
还有一个 ":windo" 命令,用于在所有视窗内执行其参数所规定的命令。
以及 ":bufdo"命令,对所有缓冲执行其参数所规定的命令。
使用中要小心,因为你在缓冲列表中的文件数量可能超过你能想像的。
请用 ":buffers" 命令 (或 ":ls") 来检查缓冲列表。
可以在命令行下进行替换,
仍然以vi方法中的例子进行讲解,把c文件中的"x_cnt" 改为 "x_counter"。
2 perl
可以执行以下命令:
find . -name '*.c' -print0 | xargs -0 perl -pi -e 's/x_cnt/x_counter/g'
xargs 把find命令的结果作为perl的参数。
find的参数-print0和xargs的参数-0是防止文件名中有空格或新行造成错误,可以man xargs获得帮助。
注意: 如果替换的字符包括 ()[]/"'!? 等等这样的特殊字符,你必须在字符前加上反斜杠\ 。
这种方法的好处是不用启动编辑器,比较迅速。缺点是容易出现不想要的替换,例如:把px_cnt替换成了px_counter。
3 sed
仍以上面的例子讲解:
find . -name "*.c" -print0 | xargs -0 sed -i 's/x_cnt/x_counter/g'
优缺点和perl方法相同。
以上方法的差异只在于使用工具的不同,相信肯定还有别的工具能办到这件事。
比如emacs,肯定也能做到这些,只是因为我不用emacs,所以不熟悉。
希望大家总结自己得心应手的方法。
- linux如何在多个文件中替换某个字符串
- linux -- 批量替换多个文件中的某个字符串
- linux 替换目录下所有文件中某个字符串命令
- Linux批量替换多个文件中字符串
- Linux批量替换多个文件中字符串
- Linux shell批量替换多个文件中字符串
- sed 命令替换多个文件中的某个字符串
- Eclipse中,如何对多个JAVA文件,进行某个字符的查找替换
- shell 脚本替换文件中某个字符串
- shell 脚本替换文件中某个字符串
- shell 脚本替换文件中某个字符串
- shell 脚本替换文件中某个字符串
- sed在多个文件夹中替换某个字符
- 在多文件中查找某个字符串
- vim 在多个文件中替换
- Linux常用文件操作 -- 批量替换多个文件中字符串
- linux之批量替换多个文件中相同的字符串
- 如何在linux下快速替换多个文件的文本?
- 小布什! 你还记得大明湖畔的本拉登么?
- HDOJ 1287 破译密码
- 使用Eclipse的几个必须掌握的快捷键[转]
- 三双
- 中国IT业界家族财富榜前五
- linux如何在多个文件中替换某个字符串
- Thread-Safe Interface
- 数组和List 之间相互转换的方法
- android GPS JAVA 获取GPS功能是否禁用
- Android的XML文件名不可以出现大写。
- 使用EventWaitHandleSecurity进行程序间同步时,在非英语机器上程序hang住了。
- 创新只是个笑话
- c#中的事件和委托
- 最近oracle使用过程中的一些总结