sed 是一種數據流編輯器,它一次處理一行內容,處理時,把當前處理的行存儲在臨時緩沖區(pattern space稱為“模式空間”)中,在內存中處理,完成后把該行發送到屏幕上,清理pattern space中的內容,接著重復剛才的動作,讀入下一行,直到文件處理結束。文件內容并沒有 改變,除非你使用重定向存儲輸出。 默認顯示模式空間的內容。
請勿將sed這個工具理解為sed命令,而應該看作是一個包含很多命令的程序,所以后文中"sed命令"表示的是sed中的子命令,而非sed本身這個命令),這些命令通過"-e"、"-f file"傳遞,或者當沒有指定這兩個選項時,通過第一個非選項參數傳遞。這些傳遞的命令集合稱為sed的執行腳本(SCRIPT),命令的執行順序按照命令行中給定的順序依次執行。
在SCRIPT或SCRIPT-FILE中的多個命令可以使用分號";"進行分隔,或者換行書寫。但有些命令,由于它們的語法問題,導致不支持使用分號作為命令分隔符,因此只能換行書寫,除非它們是SCRIPT或SCRIPT-FILE中的最后一個命令。允許命令的前面有空白字符。
sed維護兩個數據緩沖空間:一直處于活動狀態的模式空間(pattern space)和輔助性的保持空間(hold space)。這兩個空間初始時都為空。
sed的一個循環的過程:
- 讀取輸入流的一行,移除該行的尾隨換行符,并將其放入到pattern space中。
- 對模式空間中的內容進行匹配和處理。地址是一種條件判斷代碼,只有符合條件的行才會執行相應的命令。
- 自動輸出