利用sed批量替换一批文件

在需要对一个文件进行替换的时候,利用sed这个工具非常有用,比如

sed ‘s/abc/efg/g’ file

今天遇到一目录的文件需要批量进行替换,这样就比较麻烦了。以前还没有这样做过。man了一下sed的帮助,又从网上查找了一下,发现了一个比较好的解决方案,用参数-in-place。

在Linux平台上,利用如下命令即可达成:

sed -in-place -e ‘s/abc/cba/g’ *

不过好像Solaris平台不支持-in-place这个参数,只能用一个小小的程序实现了。

for f in `ls *.html`
do
cat $f | sed s#/style.css#/blog/styles_zh-cn.css#g > tmp.txt
mv -f tmp.txt $f
done

本文参考了车东的一片帖子

This entry was posted in 脚本语言 and tagged . Bookmark the permalink.

2 Responses to 利用sed批量替换一批文件

  1. 誰誰誰 says:

    也可以用find 命令。传说UNIX 的精髓就在于一堆的小命令干大事
    find *.html -exec sed -e ‘s/abc/efg/g’ {} \;

  2. ricky says:

    对的,怎么一紧张连这个都忘记了,呵呵,不过你说的对,UNIX的精髓就在于一大堆组合起来能干大事的小命令。

Leave a Reply

Your email address will not be published. Required fields are marked *