1. Sed簡介
Sed 是一種在線編輯器,它一次處理一行內容;處理時,把當前處理的行存儲在臨時緩沖區中,稱為"模式空間"(pattern space),接著用sed命令處理緩沖區中的內容,處理完成後,把緩沖區的內容送往屏幕;接著處理下一行,這樣不斷重復,直到文件末尾;文件內容並沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。
2. 定址
可以通過定址來定位你所希望編輯的行,該地址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的范圍(包括行數表示的那兩行)。如1,3表示1,2,3行,美元符號($)表示最後一行。范圍可以通過數據、正則表達式或者二者結合的方式確定。
3. Sed命令
調用sed命令有兩種形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
命令說明:
a\
在當前行後面加入一行文本。
b lable
分支到腳本中帶有標記的地方,如果分支不存在則分支到腳本的末尾。
c\
用新的文本改變本行的文本。
d
從模板塊(Pattern space)位置刪除行。
D
刪除模板塊的第一行。
i\
在當前行上面插入文本。
h
拷貝模板塊的內容到內存中的緩沖區。
H
追加模板塊的內容到內存中的緩沖區
g
獲得內存緩沖區的內容,並替代當前模板塊中的文本。
G
獲得內存緩沖區的內容,並追加到當前模板塊文本的後面。
l
列表不能打印字符的清單。
n
讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。
N
追加下一個輸入行到模板塊後面並在二者間嵌入一個新行,改變當前行號碼。
p
打印模板塊的行。
P(大寫)
打印模板塊的第一行。
q
退出Sed。
r file
從file中讀行。
t label
if分支,從最後一行開始,條件一旦滿足或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。
T label
錯誤分支,從最後一行開始,一旦發生錯誤或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。
w file
寫並追加模板塊到file末尾。
W file
寫並追加模板塊的第一行到file末尾。
!
表示後面的命令對所有沒有被選定的行發生作用。
s/re/string
用string替換正則表達式re。
=
打印當前行號碼。
#
把注釋擴展到下一個換行符以前。
替換標記
g表示行內全面替換。
p表示打印行。
w表示把行寫入一個文件。
x表示互換模板塊中的文本和緩沖區中的文本。
y表示把一個字符翻譯為另外的字符(但是不用於正則表達式)