sed [-n][-e] '[address1,[address2]] !{cmd}' fn
sed [-n] -f sedsrc fn
n:僅打印p或s指定的行
e:下一個參數爲命令'[address1,[address2]] cmd'
f:下一個參數是sed腳本
sed命令能夠指定0-2個地址,每一個地址是行號或行尋址的正則表達式.若沒有指定地址則命令做用於每一行;若只有一個地址則命令做用於與該地址匹配的任意行;若指定了逗號分隔的兩個地址則命令做用於匹配的第一個地址到第二個地址之間的每一行,未匹配第二個地址時則默認到文件末尾;若地址後接!則命令做用於不匹配該地址的全部行.
a,i,r,q,=只做用於單行
:label:標籤是任意很少於7個字符的序列用於實現b或t的轉移,以冒號開始並佔據一行,冒號和標籤之間無空格.
[address]=:打印被匹配行的行號(須要抑制默認輸出),eg:sed -n '/^if/ {=;p}' test.txt打印if開頭的行號和內容
[address]a\text:在parttern space中將text放入匹配行的下一行
[address]i\text:在parttern space中將text放入匹配行的上一行
[address1,[address2]]c\text:用text替換parttern space中的內容
[address1,[address2]]b [label]:label後的命令是做用於當前行的下一個命令,若未指定label則再也不有命令做用於當前行
[address1,[address2]]t [label]:若在行尋址範圍中成功進行了替換則label後的命令是做用於當前行的下一個命令,若未指定label則再也不有命令做用於當前行
[address1,[address2]]d:從parttern space中刪除匹配行,該行不會到標準輸出.腳本的第一個命令做用於新的輸入行
[address1,[address2]]D:刪除由N建立的parttern space中第一個\n以前的內容,並用腳本的第一條命令做用於\n以後的內容
[address1,[address2]]n:讀取下一個輸入行到parttern space,當前行被送到標準輸出,行計數器遞增,n後面的命令做用於當前行
[address1,[address2]]N:讀取下一個輸入行追加到parttern space,新加行與原有行用\n來分隔.用\n可匹配兩行之間的\n
[address1,[address2]]p:打印匹配的行,若沒有抑制輸出(-n),則將致使匹配的行重複輸出
[address1,[address2]]P:打印由N建立的parttern space中第一個\n以前的內容
[address]q:遇到匹配行時退出
[address1]r fn:讀取fn並追加到parttern space中,fn不存在不報錯
[address1,[address2]]w fn:將parttern space的內容寫入到fn中,fn不存在就建立
[address1,[address2]]y/ab/AB/:在匹配的行中用A替換a,B替換b,不管ab是否相臨
[address1,[address2]]g:將hold space內容複製到parttern space中
[address1,[address2]]G:將hold space內容追加到parttern space中,若hold space爲空則將\n追加至parttern space
[address1,[address2]]h:將parttern space內容複製到hold space中
[address1,[address2]]H:將parttern space內容追加到hold space中,若parttern space爲空則將\n追加至hold spac
[address1,[address2]]x:交換parttern space和hold space內容
[address1,[address2]]s/parttern/replacement/flags(ngpw):在匹配的行中用replacement替換parttern
n:1-512,對匹配的第n次狀況進行替換
g:global,對全部匹配進行替換
p:替換成功後並打印
w fn:替換成功後後寫入fn中,fn最多10個
若parttern中含有/則定界符可用其餘字符代替,eg:s#/usr/bin#/root/bin#g
replacement是一個字符串,用來替換與正則表達式匹配的內容,replacement中的&表示parttern中正則表達式匹配的內容;replacement中的\n(數字)表示匹配的第n個子串,在parttern中用\(和\)指定正則表達式