当前位置: 技术问答>linux和unix
如何使用vim在多个文件中进行字符串查找与替换?
来源: 互联网 发布时间:2016-07-30
本文导语: 使用vim,需要在某个目录下搜索到包含“字符串A”的文件,并将这些文件中的“字符串B”替换成“字符串C”。 例如:把目录中包含字符串"AAA"的所有文件都查找出来,然后把文件中的另一个字符串"BBB"替换为"CCC". 注...
使用vim,需要在某个目录下搜索到包含“字符串A”的文件,并将这些文件中的“字符串B”替换成“字符串C”。
例如:把目录中包含字符串"AAA"的所有文件都查找出来,然后把文件中的另一个字符串"BBB"替换为"CCC".
注:保证“AAA”与“BBB”字符串会同时在一个文件中存在。
请问如何使用Vim的命令达到上述目的?
例如:把目录中包含字符串"AAA"的所有文件都查找出来,然后把文件中的另一个字符串"BBB"替换为"CCC".
注:保证“AAA”与“BBB”字符串会同时在一个文件中存在。
请问如何使用Vim的命令达到上述目的?
|
提醒楼主: 动手之前最好先备份。
5楼的命令我自己试过,应该可以,但是还是小心一点好。
5楼的命令我自己试过,应该可以,但是还是小心一点好。
|
sed -i 's/BBB/CCC/g' `grep -l AAA`
列出所有包含AAA的文件: grep -l AAA
针对一个文件作替换的命令: sed -i 's/BBB/CCC/g' filename
两个结合在一起就是批量替换了。
's/BBB/CCC/g' 两个单引号,用双引号好像也行。
`grep -l AAA` 这两个不是单引号,而是键盘上和~在一起的那个键,在1键的左边。作用是把grep命令的输出放在命令行的这个位置。
列出所有包含AAA的文件: grep -l AAA
针对一个文件作替换的命令: sed -i 's/BBB/CCC/g' filename
两个结合在一起就是批量替换了。
's/BBB/CCC/g' 两个单引号,用双引号好像也行。
`grep -l AAA` 这两个不是单引号,而是键盘上和~在一起的那个键,在1键的左边。作用是把grep命令的输出放在命令行的这个位置。
|
为啥一定要用 vim 去做呢?
用 find + grep + sed 去做很容易阿。
用 find + grep + sed 去做很容易阿。
|
vi中只能进行文本内的替换,例如:
:%s/AAA/BBB/g
要想在文件范围内进行替换,方法很多,
awk,sed都可以,shell也行,具体的例子就不写了,很easy的
:%s/AAA/BBB/g
要想在文件范围内进行替换,方法很多,
awk,sed都可以,shell也行,具体的例子就不写了,很easy的
|
首先用命令: find / -name AAA 或者 ls -l / | grep AAA 找出含AAA的文件!
然后通过vim编辑器对查找出的文件进行编辑,再来进行替换:%s/BBB/CCC/g(在整个文件进行替换)!!
这种比较麻烦,但比较容易理解!!
然后通过vim编辑器对查找出的文件进行编辑,再来进行替换:%s/BBB/CCC/g(在整个文件进行替换)!!
这种比较麻烦,但比较容易理解!!
|
vim是可以做到的,用args载入要修改的文件,用argdo做批量修改.
|
sed -i 's/BBB/CCC/g' `grep -l AAA`
|
如果 非要这样的话可以在vim里面用:shell
|
vim适于处理字符的东西。。怎么lz用它处理目录啊?
|
顶起。
|
vim 是可以做的
: h args
: h args
|
好多技巧啊,学习了