Linux流編輯器是在數(shù)據(jù)中心中運(yùn)行腳本的一種有用方法。通過這些命令示例,您可以開始熟悉sed。
想要修改文件而不覆蓋原始文件的Linux管理員有很多選擇,但最有效的工具之一是流編輯器 - sed。
流編輯器是大多數(shù)Linux發(fā)行版的默認(rèn)部分。它使您能夠使用Linux sed命令在操作系統(tǒng)中執(zhí)行文本文件操作。
與大多數(shù)Linux應(yīng)用程序一樣,sed可以處理管道輸入,這使它成為一種有效的腳本工具。您可以將其用作基本的查找和替換工具,如下面的示例命令所示,該命令查找出現(xiàn)的一個實(shí)例,并將其替換為兩個實(shí)例。命令以 /g結(jié)束。
sed 's/one/two/g' linuxidc linuxmi
例如,這個Linux sed命令可以幫助您定位和創(chuàng)建配置文件的新版本。當(dāng)這些函數(shù)作為腳本的一部分運(yùn)行時,它們是可重復(fù)的和一致的,并且您可以快速實(shí)現(xiàn)更改。
但是sed的主要目的是更改文本文件的內(nèi)容。它使用了一些重要的命令行開關(guān)。/s表示搜索,該命令以/g分隔。-i開關(guān)在適當(dāng)?shù)奈恢蒙线\(yùn)行命令——它直接修改文件。
sed -i 's/Port 22/Port 10000/g' /etc/ssh/sshd_config
在此示例中,/etc/ssh/sshd_config文件中Secure Shell服務(wù)器中使用的端口號從默認(rèn)端口22更改為端口10000。
使用Linux sed命令進(jìn)行文件更改
可以使用sed編輯文件,但有點(diǎn)不滿意。 ad hoc編輯可能會導(dǎo)致問題,因?yàn)閟ed無法訪問完整的源代碼,也無法識別錯誤或拼寫錯誤。 此外,這樣做會使原始文件處于危險之中,因?yàn)橐坏┠牧嗽即a,就無法恢復(fù)原始代碼。
您可以使用-e開關(guān)一次指定多個更改。 同樣,sshd_config.conf文件使得更改多行變得簡單。 下面的腳本可能看起來很復(fù)雜,但操作系統(tǒng)只是傳遞多個sed更改數(shù)據(jù)包,每個數(shù)據(jù)包前綴為-e。
使用sshd_config文件,您可以更改端口號,禁用密碼身份驗(yàn)證并一步啟用公鑰身份驗(yàn)證。
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
搜索和替換功能在新的一行; 用\分解命令不起作用,因?yàn)閟ed將其視為特殊字符。
結(jié)合sed中的提示
您還可以將多個Linux sed命令鏈接在一起以更改應(yīng)用程序的位置。 手動修改文件路徑有很大的錯誤空間,但自動化它可以使生活更輕松。
用作分隔符的反斜杠可能不適用于某些腳本,但sed允許您更改分隔符。 例如,假設(shè)您有一個名為example.conf的日志文件,其中包含以下內(nèi)容:
logpath = /var/log/mylogfile.log
將此路徑更改為/my/alternate/path/newlog.log
,您可以使用|作為分隔符,因?yàn)?在文件系統(tǒng)路徑中不起作用。
sed -i 's|/var/log/mylogfile.log|/my/alternate/path/newlog.log|g' example.conf
使用Linux sed命令的其他方法包括使用^#MyComment為搜索模式添加前綴; 這會搜索以#MyComment開頭的行。 您可以在輸出端使用它,以便創(chuàng)建一個新行來替換現(xiàn)有的一行。 您還可以使用$字符在行尾查找內(nèi)容。
要查看更高級的示例,請使用man sed命令。 它提供了更詳細(xì)的命令和語法分解。
|
|
總結(jié)
以上所述是小編給大家介紹的實(shí)戰(zhàn)基本的Linux sed命令示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!