藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月26日 11:18


請教高手:如何批量替換文件中的字符串?

我現在有好多代碼,在不同的目錄下,
文件中有許多一樣的字符串。比如:
/home/usr/a/a.c
/home/usr/b/b.c
/home/usr/c/c.c
/home/usr/d/d.c
這些文件裡面都有字符串home/usr,
現在我想把他們都替換成usr。

好多文件,並不是只有四個。
我在/home/usr下
用find . -name '*c' |xargs grep home |cut -d ':' -f 1  可以得到這些文件名。
該如何做?

http://www.lslnet.com/linux/#viewthread.php?tid=452942&extra=page%3D1

我看了以後不知道該如何解決,懇請幫忙。

再看一遍,重點看sed部分

http://hepg.sdu.edu.cn/Chinese_2003/service/computer/users_guide/linux/substr
裡面這個腳本可以實現。請查看。
像你上面的情況,你想將/home/usr下的所有文件中的aa替換成bb ,你可以執行
#cd /home/usr
#sh substr.sh aa bb
done.
:)

回復 1樓 liqxy 的帖子

vim中直接就可以查找替換

                ** 輸入 :s/old/new/g 可以替換 old 為 new。**

  1. 請將光標移動到本節中下面標記有 ---> 的那一行。

  2. 輸入 :s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配
     串。

  3. 輸入 :s/thee/the/g        則是替換全行的匹配串。

---> the best time to see thee flowers is in thee spring.

  4. 要替換兩行之間出現的每個匹配串,請輸入 :#,#s/old/new/g (#,#代表的是
     兩行的行號)。輸入 :%s/old/new/g 則是替換整個文件中的每個匹配串。



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com