Linux搜尋和替換示例

2021-10-06 19:53:09 字數 985 閱讀 8858

最近,我不得不更改一些巢狀子目錄中一堆配置檔案中顯示的文字。 我沒有時間利用已有10年歷史的perl技能,我在尋找一些可以使用的shell命令。 令人驚訝的是,網路上有很多例子都行不通,所以我得到了這些變體:

如果您需要替換一組檔案中的一組特定文字,但又不知道哪些檔案可能包含您要查詢的文字,這可能會很有用:

grep -lr -e 'old text' * | xargs sed -i 's/old text/new text/g'
在這裡使用grep,我們以遞迴方式(「 -r」選項)查詢包含文字「 old text」的檔案。 您可以在這裡真正地使用regex發揮創意,這可以通過「 -e」選項實現。

grep提供了執行實際搜尋和替換的檔案列表(「 -l」選項)(您可以單獨執行該部分以檢視其輸出); 然後,將此檔案列表通過管道傳遞給set命令,然後該命令執行搜尋和用新文字替換舊文字的實際工作。

sed的「 -i」選項將導致就地編輯,這意味著原始檔案已被修改(在我的情況下,這是必要的,但是如果您提供-i,則可以告知sed進行備份)。 「 s /…」中的「 s」表示「替代」,「 g」表示「全域性替換」 –正是這樣。

如果您碰巧知道需要更新的檔名,則可以使用以下變體:

find -name myconfig_file.txt | xargs sed -i 's/old text/new text/g'
這基本上是相同的想法,但是使用find操作來提供與給定名稱匹配的檔案列表。 從當前開始,這貫穿所有子目錄。 然後,以與上述相同的方式將檔案列表通過管道傳輸到sed。

ps above命令在ubuntu和redhat上進行了測試

grep命令參考

xargs命令參考

sed命令參考

sed命令在mac os x上出現「未定義標籤」錯誤

標記: 搜尋

unix

翻譯自:

vim搜尋和替換

進入可視模式 pattern 從游標開始處向檔案尾搜尋pattern pattern 從游標開始處向檔案首搜尋pattern n 在同一方向重複上一次搜尋命令 n 在反方向上重複上一次搜尋命令 s p1 p2 g 將當前行中所有p1均用p2替代 n1,n2s p1 p2 g 將第n1至n2行中所有p...

linux 全文搜尋 替換 刪除

查詢 在當前目錄下的.jsp檔案中查詢 alert 字串 grep alert jsp 在當前目錄及其多個子目錄中查詢檔案portal.jsp find name portal.jsp print 在當前目錄及其多個子目錄下的.jsp檔案中查詢字串 alert find name jsp print...

VIM中的搜尋和替換

vim是被譽為非常高效的文字編輯軟體。但是掌握並高效的使用是件有難度的事情。在vim中進行快速的查詢和替換是提高vim使用效率的重要方法。下面是我在閱讀vim使用者手冊時整理的一些資料 行內搜尋。f命令可以進行行內搜尋。輸入fx可以找到下乙個x字元。f命令可以在反方向進行行內搜尋,輸入fx可以找到上...