介紹

賽德代表 小的流動 急診室伊托爾。這是一個用於查找、查找、替換、插入和刪除文本文件中的單詞和行的 Linux 命令。

sed 命令最常見的用例是查找和替換文件中的字符串。 sed 命令允許您在不打開文件的情況下編輯文件。

本文詳細介紹瞭如何使用 Sed 命令查找和替換文件中的字符串。

本教程中的所有示例均在 Ubuntu 20.04 上運行。

查找和替換

默認情況下,Sed 安裝在大多數 Linux 發行版上。 要檢查 Sed 在 Linux 系統上的安裝,請運行:

$ sed --v

輸出如下所示:

使用 Sed 命令查找和替換文本的基本語法是:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

的:

-i:此選項使 Sed 命令就地編輯文件,而不是將輸出寫入標準輸出。

s:代表替代品。

//: 分隔符。

g:全局替換標誌。

FILE:Sed 命令將操作的文件。

強烈建議在搜索模式、替換模式和其他參數周圍使用引號。

例如,這裡是演示的文本文件:

567 Test test test
test /bin/zsh linuxways.net testbar 789

要將所有“test”單詞替換為“linux”單詞,請運行以下命令:

$ sed -i 's/test/linux/g' test.txt

輸出:

如果沒有 g 標誌,則僅替換每行上第一次出現的搜索模式。

$ sed -i 's/test/linux/' test.txt

輸出:

如您所見,前面的示例還將子字符串 test 放在了 testbar 字符串中。如果您不想替換搜索模式的子字符串,請將搜索模式放在兩個單詞邊界 b 之間:

$ sed -i 's/btestb/linux/g' test.txt

輸出:

使用 I 標誌使搜索模式不區分大小寫。

$ sed -i 's/test/linux/gI' test.txt

輸出:

在 Linux 世界中,我們遇到了許多在文本文件中使用分隔符的用例。必須使用反斜杠來分隔分隔符。例如,要將 /bin/zsh 替換為 /usr/bin/bash,請運行以下命令:

$ sed -i 's//bin/zsh//usr/bin/bash/g' test.txt

輸出:

遞歸搜索和替換

我經常遞歸地在目錄中搜索包含某個字符串的文件,並在所有文件中替換該字符串。

例如,以下命令在當前目錄中的所有文件中搜索字符串 ‘way’ 並將其替換為 ‘road’。

$ find . -type f -exec sed -i 's/way/road/g' {} +

如果您的文件名包含空格字符,請嘗試使用 -print0 選項。

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

要僅在具有特定擴展名的文件中查找和替換字符串,請運行:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

結論是

我已經看到了一些使用 sed 命令的常見示例。 使用 sed 命令查找和替換文件中的文本字符串並不像聽起來那麼複雜。

如果您有任何問題,請在評論中告訴我們。