介紹
賽德代表 小的流動 急診室伊托爾。這是一個用於查找、查找、替換、插入和刪除文本文件中的單詞和行的 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 命令查找和替換文件中的文本字符串並不像聽起來那麼複雜。
如果您有任何問題,請在評論中告訴我們。