sed意為流編輯器,在shell腳本和Makefile中作為過濾器使用非常方便,也就是把前一個(gè)程序的輸出引入sed的輸入,經(jīng)過一系列編輯命令轉(zhuǎn)換為另一種格式輸出。它是一款輕量級(jí)流編輯器,它無需直接編輯資料,能夠?qū)⒕庉嫻ぷ髯詣?dòng)化。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、企業(yè)網(wǎng)站建設(shè),外鏈,1元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。sed的工作方式:由標(biāo)準(zhǔn)輸入讀取編輯文件,讀入一行或指定行放到模式空間,然后將所有編輯指令逐一對(duì)模式空間的內(nèi)容進(jìn)行編輯,之后將結(jié)果輸出到標(biāo)準(zhǔn)輸出,同時(shí)清除模式空間,就這樣重復(fù)之前的操作,直到最后一行,流編輯器停止,源文件不變(除非使用-i選項(xiàng))。sed主要用來編輯一個(gè)或多個(gè)文件,簡(jiǎn)化對(duì)文件的反復(fù)操作。
我們用如下的圖來看看sed的工作流程:
sed的工作流程:將要處理的行讀入模式空間,然后進(jìn)行處理,處理完后該行被輸出,模式空間被清空。然后就重復(fù)剛才的操作,讀入文件中的下一行,直到文件處理完畢。
我們有一點(diǎn)要清楚,因?yàn)槲募?nèi)容在模式空間,并沒有改變,除非使用重定向存儲(chǔ)輸出,因而不會(huì)修改源文件。
一般情況下,數(shù)據(jù)的處理只使用模式空間,按照上圖即可完成主要任務(wù)。但是我們要知道在某些時(shí)候,通過使用保持空間,還可以帶來意想不到的效果。
sed主要的命令:
h:把模式空間的內(nèi)容復(fù)制到當(dāng)前保持緩沖區(qū)中,把原來暫存緩沖區(qū)的內(nèi)容清除掉,添加新內(nèi)容。
H:把模式空間中的內(nèi)容追加在保持緩沖區(qū)中原有內(nèi)容的后面。
g:把當(dāng)前保持緩沖區(qū)中的內(nèi)容復(fù)制到模式空間,替換掉模式空間中當(dāng)前行的內(nèi)容。
G:把當(dāng)前保持緩沖區(qū)中的內(nèi)容追加到模式空間,追加在保持緩沖區(qū)中原有內(nèi)容的后面。
d:刪除模式空間的所有行,并讀入下一新行到模式空間中。
D:刪除模式空間中的第一行,不讀入下一行。
x:交換保持空間和模式空間的內(nèi)容。
n:讀取下一輸入行,用下一個(gè)命令處理新的行。
N:追加下一輸入行到模式空間。
下面我們來做幾道練習(xí)練練手:
一個(gè)文件里面有許多文本行,給每行結(jié)尾添加一空行:
2.一個(gè)文件里面有1-5個(gè)數(shù)字,每個(gè)數(shù)字分別在一行,將文件中的這幾個(gè)數(shù)字倒序輸出。
3.把一個(gè)文件里面的某一個(gè)或幾個(gè)匹配的行追加到該文件結(jié)尾。
4.把源文件的原來一列的數(shù)字改成只有一行。
5.求1-100的和。
第一種方法:
第二種方法:
6.分別打印奇數(shù)偶數(shù)行。
以上就是自己在學(xué)習(xí)sed時(shí)所作的全部練習(xí),但還遠(yuǎn)遠(yuǎn)不夠,還要多多練習(xí)的!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。