一.n,N
next(n)輸出模式空間的內容(如果運行sed時有-n則不會輸出),然後讀取新的輸入內容。
Next(N)通過讀取新的輸入行,並將它添加到模式空間的現有內容之後來創建多行模式空間。模式空間最初的內容和新輸入行之間用換行符分隔。在模式空間中嵌入的換行符可以利用轉義序列‘\n’來匹配。在多行模式空間中,元字符‘^’匹配空間中的第一個字條,而不匹配換行符後面的字符。同樣,’$‘只匹配模式空間中最後的換行符,而不匹配任何嵌入的換行符。
控制流:n/N後繼續執行n/N後的動作,而不是直接回到最開始處執行
二.d,D
d刪除模式空間的內容並導致新讀入的輸入行,從而在腳本的頂端重新執行命令。
D刪除模式空間中直到第一個嵌入的換行符的這部分。他不會導致讀入新的輸入行,他從腳本的頂端重新匹配模式空間剩餘的內容。
控制流:回到腳本頂端
三.p,P
在執行完腳本的最後一個命令後,模式空間的內容自動輸出(-n選項或#n抑制這個默認的動作)。因此,當默認的輸出被抑制或腳本的控制流更改,一直不能到達腳本的底部時,需要使用打印命令(P或p)。注意P或p不改變模式空間的內容。
p:打印模式空間的內容
P:輸出多行模式空間的第一部分,直到第一個嵌入的換行符爲止。
注意:
對於最後一行執行N/n命令,不會執行腳本中N/n後面的命令,這樣的話當總行數是奇數的時候,最後一行不會執行N後面的命令,但如果沒有用-n來禁止打印模式空間的內容,任然會打印最後一行的內容。可以使用$!N命令,這個命令的意思是除了最後一行其他的行均執行N。