Unix sed高級工具的講解
我們今天來學(xué)習(xí)下Unix sed的知識.在Unix系統(tǒng)中,許多編輯工作都是用vi來完成的,因?yàn)関i是Unix系統(tǒng)上典型的編輯器,在很多時(shí)候,并不必須啟動vi,您可能正在寫一個(gè)shell程序,或用管道在進(jìn)程之間傳遞信息,此時(shí)需要以非交互式的方式來編輯,而Unix sed在這時(shí)候就很有作用了.
Unix sed的名字來源于stream editor(流編輯器),是個(gè)過濾文本的工具.在使用sed編輯文件時(shí),可以指定文件名,或從標(biāo)準(zhǔn)輸入中得到輸入.sed每次讀一行,并對每行作指定的編輯工作.同樣可以指定特定的行號,供Unix sed進(jìn)行編輯.sed的許多用法與ed相同.
可以用下面兩種方式調(diào)用Unix sed:
- sed [-n][-e] 'command' filename(s)
- sed [-n] -f scriptfile filename(s)
sed的第一種格式用于在命令行中執(zhí)行命令.默認(rèn)情況下,sed將顯示所有行,-n 表示只需要打印p命令指定的行.第二種格式允許指定一個(gè)或多個(gè)包含編輯命令的腳本.下面是Unix sed的兩種不同格式中的三個(gè)選項(xiàng)進(jìn)行總結(jié):
-n 只打印用p命令指定的行
-e command -e后的參數(shù)是一個(gè)編輯命令
-f filename -f后的參數(shù)是包含編輯命令的文件
下面看幾個(gè)例子:
- sed -n 16,18p passwd.test 打印passwd.test的16到18行.
- sed 16,18d passwd.test 刪除passwd.test的16到18行.
- sed '/bsh/ d' passwd.test 刪除包含bsh的行.
- sed '/bsh/ ld' passwd.test 刪除除bsh行以外的行
前面僅僅用了Unix sed中的一些很表面的命令,下面總結(jié)了Unix sed的命令:
命令 說明
a 添加文本
b 轉(zhuǎn)移到標(biāo)簽處
c 用文本替換行
d 刪除當(dāng)前文本緩沖區(qū)
i 插入文本
P 從模式空間開始打印,知道出現(xiàn)新行
r 讀入模式
s 替換模式
y 轉(zhuǎn)換字符
【編輯推薦】