如何在Linux系統中使用grep查詢並替換檔案中的單詞?


雖然有很多方法可以在Linux目錄中的特定檔案中列印和使用特定單詞,但是當我們談論查詢特定單詞然後將其替換為其他單詞時,我們需要混合使用某些Linux實用程式命令。

我們必須瞭解的兩個Linux實用程式命令是:

  • find - 用於查詢特定檔案或目錄

  • sed - 流編輯器縮寫,用於執行搜尋、編輯和替換等功能。

為了解決查詢並替換特定單詞的問題,我們將使用一個組合命令,該命令同時包含上述兩個命令。

假設我們有一個名為textfile.txt的文字檔案,其中包含以下文字:

this is a simple file

現在,我們想將文字“text = **simple**”替換為“text = **not a simple**”。為此,我們將首先找到該檔案,然後使用exec實用程式命令告訴Linux我們要執行某些操作,然後使用sed命令來幫助我們查詢並更改檔案中的字串。

在您的終端中執行以下命令:

find textfile.txt -type f -exec sed -i "" "s/sample/not a sample/g" {} \;

執行檔案後,textfile.txt檔案的內容應如下所示:

this is a not a sample file

問題解決了,但是等等,如果您使用的是macOS,則為了實現此輸出,您需要匯出兩個環境變數,或者您可以將它們放在~/.bashrc或~/.zshrc檔案中。

在下面的程式碼中,您可以看到我的~/.zshrc檔案中存在的不同環境變數:

immukul@192 linux-questions-code % cat ~/.zshrc
export GOPATH=/Users/immukul/go_projects
export NDHOME=/Users/immukul/Downloads
export GOTRACEBACK=all
export GOROOT=/usr/local/go
export LC_CTYPE=C
export LANG=C

透過將LC_CTYPE設定為C,我們告訴Linux字串中的每個位元組都是其自身的字元,無需應用任何編碼規則。

請注意~/.zshrc檔案輸出中最後兩個變數,您只需要將它們放在~/.bashrc或~/.zshrc檔案中即可。

更新於:2021年7月30日

4K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告