2021-05-12 14:32:11
了解基本的Linux sed命令
Linux流編輯器是在資料中心中執行指令碼的一種有用方法。通過這些命令範例,您可以開始熟悉sed。
想要修改檔案而不覆蓋原始檔案的Linux管理員有很多選擇,但最有效的工具之一是流編輯器 - sed。
流編輯器是大多數Linux發行版的預設部分。它使您能夠使用Linux sed命令在作業系統中執行文字檔案操作。
與大多數Linux應用程式一樣,sed可以處理管道輸入,這使它成為一種有效的指令碼工具。您可以將其用作基本的查詢和替換工具,如下面的範例命令所示,該命令查詢出現的一個範例,並將其替換為兩個範例。命令以 /g結束。
sed 's/one/two/g' linuxidc linuxmi
例如,這個Linux sed命令可以幫助您定位和建立組態檔的新版本。當這些函數作為指令碼的一部分執行時,它們是可重複的和一致的,並且您可以快速實現更改。
但是sed的主要目的是更改文字檔案的內容。它使用了一些重要的命令列開關。/s表示搜尋,該命令以/g分隔。-i開關在適當的位置上執行命令——它直接修改檔案。
sed -i 's/Port 22/Port 10000/g' /etc/ssh/sshd_config
在此範例中,/etc/ssh/sshd_config檔案中Secure Shell伺服器中使用的埠號從預設埠22更改為埠10000。
使用Linux sed命令進行檔案更改
可以使用sed編輯檔案,但有點不滿意。 ad hoc編輯可能會導致問題,因為sed無法存取完整的原始碼,也無法識別錯誤或拼寫錯誤。 此外,這樣做會使原始檔案處於危險之中,因為一旦您更改了原始程式碼,就無法恢復原始程式碼。
您可以使用-e開關一次指定多個更改。 同樣,sshd_config.conf檔案使得更改多行變得簡單。 下面的指令碼可能看起來很複雜,但作業系統只是傳遞多個sed更改封包,每個封包字首為-e。
使用sshd_config檔案,您可以更改埠號,禁用密碼身份驗證並一步啟用公鑰身份驗證。
sed -i -e 's/Port 22/Port 10000/g' -e '
s/PermitRootLogin yes/PermitRootLogin no/g' -e '
s/PasswordAuthentication yes/PasswordAuthentication no/g' -e '
s/#PasswordAuthentication no/#PasswordAuthentication no/g' /etc/ssh/sshd_config
搜尋和替換功能在新的一行; 用分解命令不起作用,因為sed將其視為特殊字元。
結合sed中的提示
您還可以將多個Linux sed命令連結在一起以更改應用程式的位置。 手動修改檔案路徑有很大的錯誤空間,但自動化它可以使生活更輕鬆。
用作分隔符的反斜槓可能不適用於某些指令碼,但sed允許您更改分隔符。 例如,假設您有一個名為example.conf的紀錄檔檔案,其中包含以下內容:
logpath = /var/log/mylogfile.log
將此路徑更改為/my/alternate/path/newlog.log,您可以使用|作為分隔符,因為/在檔案系統路徑中不起作用。
sed -i 's|/var/log/mylogfile.log|/my/alternate/path/newlog.log|g' example.conf
使用Linux sed命令的其他方法包括使用^#MyComment為搜尋模式新增字首; 這會搜尋以#MyComment開頭的行。 您可以在輸出端使用它,以便建立一個新行來替換現有的一行。 您還可以使用$字元在行尾查詢內容。
要檢視更高階的範例,請使用man sed命令。 它提供了更詳細的命令和語法分解。
相關文章