Linux 下查找替换的一个小例子

最近遇到一个问题,一个程序有很多配置文件,在这些配置文件里有一些关键词需要替换,当然,这些关键词在很多文件中,也可能在子目录中。我可不太想一个文件一个文件的打开去检查,查找替换。这是没有办法才会做的事。当然可以通过编程用 正则表达式 去做。用程序遍历整个文件夹,然后用程序去替换。但其实还可以用shell 脚本实现,很简单的。
为了做测试,我自己建立了一个Test 文件夹,里面放了两个文件,其中多个地方都有内容"old text" ,两个文件都有。

比如 1.txt 的内容如下
程序代码 程序代码

this is a test file
how can i replace text ,
==============
the old text 001
the old text 002
==============

文件2.txt 里面的内容,也有很多 "old text" 的关键词.
现在开始替换,有两种情况:
查找和替换所有文件
程序代码 程序代码

grep -lr -e 'old text' * | xargs sed -i 's/old text/new text/g'



运行之后,你会发现 Test 文件夹下所有文件里包含 old text 都被替换成了 new text .达到我的目的。详细介绍下命令:
grep 表示过滤,管道
-l  表示列表
-r  表示递归
-e 表示正则表达式
s/ 表示替换
/g 表示全局,也就是替换所有的.

查找和替换指定的文件
程序代码 程序代码

find -name 1.txt|xargs sed -i 's/old text/new text/g'


对指定的文件,就可以这样替换了。

参考文档: http://www.linuxjournal.com/content/applying-xargs


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2012-11-20 08:53 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: linux search
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.