linux中在多個檔案中尋找替換文本的shell指令碼

來源:互聯網
上載者:User

使用find和sed

#首先尋找個數(sed -n)

find . -name '*.htm' | xargs sed -n '/old/p'

#然後替換(sed -i)

find . -name '*.htm' | xargs sed -i 's/old/new/g'

使用grep和sed

grep -l old *.htm | xargs sed -n "/old/p"
sed -n '/old/p' `grep -l old *.htm`

使用find和perl

find . -name '*.htm' | xargs  perl -pi -e 's|old|new|g'

參考:

http://hi.baidu.com/msingle/blog/item/3b125b3fc0e1efe255e72375.html

http://blog.csdn.net/zhangboyj/article/details/6215429

// 使用 shell 在多個檔案中尋找  
find . -type f | xargs grep flash  
說明:  
找出前目錄及其子目錄下的檔案中含有 flash 的檔案  
//  
重點記錄下 xargs 命令:  
xargs 在標準輸入上取得參數列表、一行一個,再將他們以適當的大小組起來(由主機的 ARG_MAX 值決定)傳給另一個命令,此命令在作為 xargs 的參數.  
ARG_MAX 值查看方法:  
getconf ARG_MAX  
//  
//  
在多個檔案中尋找使用命令替換也可以完成  
grep flash $( find . -type f)  
說明:  
$() 是命令替換,括弧內是 shell 命令;shell 執行括弧內的命令並將整個 $(...) 替換為 命令的輸出  
命令替換的形式有兩種,一種是 $(),另一種是使用兩個反引號 `find . -type f`

// 多個檔案中替換 - sed  
為了保證不該替換的不被替換,先在檔案中尋找一下哪些會被替換  
find -type f ! -path '*.svn*' | xargs sed -n '/Ookong inc/p'  
說明:  
1, find 首先過濾掉 .svn 目錄及其子目錄  
2, xargs 傳遞參數給 sed 命令  
3, sed 執行尋找, 只列印符合要求的行  
//  
// 替換  
find -type f ! -path '*.svn*' | xargs sed -i 's/Ookong inc/Ookong Ltd. Co./g'  
說明:  
1, sed 的 i 選項直接在檔案中替換,而不是把替換結果列印出來  
2, g 對每行中所有匹配執行替換  
//  
//  
另外:一個 perl 多檔案尋找的程式: ack  
-- 顯示所在的行號及所在的檔案  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.