sed本身也是一個(gè)管道命令,可以分析standard input的,sed可以將數(shù)據(jù)進(jìn)行替換、刪除、新增、選取特定行等。
sed的用法
$ sed [-nefr] [動(dòng)作]
參數(shù):
-n : 使用安靜模式。在一般sed用法中,所有來(lái)自STDIN的數(shù)據(jù)一般都會(huì)被列出到屏幕上。但如果加上-n參數(shù)后,則只有經(jīng)過(guò)sed特殊處理的那一行(或者操作)才會(huì)被列出來(lái)。
-e : 直接在命令行模式上進(jìn)行sed的動(dòng)作編輯。(默認(rèn))
-f : 直接將sed的動(dòng)作寫在一個(gè)文件內(nèi),-f filename則可以執(zhí)行filename內(nèi)的sed動(dòng)作。
-r : sed的動(dòng)作支持的是擴(kuò)展型正則表達(dá)式的語(yǔ)法(默認(rèn)是基礎(chǔ)正則表達(dá)式語(yǔ)法)。
-i : 直接修改讀取的文件內(nèi)容,而不是屏幕輸出。
默認(rèn)情況下sed不直接作用于讀取的文件中
動(dòng)作說(shuō)明: [n1[,n2]] function
- n1,n2 : 不見(jiàn)得會(huì)存在,一般代表選擇進(jìn)行動(dòng)作的行數(shù),舉例來(lái)說(shuō),如果我的動(dòng)作是需要在10到20行之間進(jìn)行的,則“10,20[動(dòng)作行為]”。
function 有下面的這些參數(shù):
- a : 新增到下一行,后面可以接字符串
- c : 替換,后面可以接字符串
- d : 刪除,后面不接熱河參數(shù)
- i : 插入到上一行,后面可接字符串
- p : 打印,通常會(huì)與參數(shù) sed -n 一起運(yùn)行
- s : 查找并替換特定字符串,通常搭配正則表達(dá)式。
例如,1,20s/old/new/g
演示
//假設(shè)有text文件
$ sed '2,5d' text #將第2~5行刪除
$ sed '2a hahaha' text #在第二行后加上“hahaha”字樣
$ sed '2a hahaha\
> xixixi' text #在第二行后加上兩行字
$ sed '2,5c No 2-5 number' text #將第2~5行的內(nèi)容替換成為“No 2-5 number”,是整行替換
$ sed -n '5,7p' text #將5~7行打印出來(lái),一定要加 -n
$ sed 's/hahaha/ssss/g' text #將hahaha字段替換成ssss,這是部分?jǐn)?shù)據(jù)的查找并替換
sed還可以和正則表達(dá)式配合使用
如:$ sed 's/^h/ssss/g' text #將h開(kāi)頭的字段替換成ssss
注意
- sed后面接的動(dòng)作,務(wù)必以兩個(gè)單引號(hào)括住。
- 使用p(打印)參數(shù)時(shí),sed一定要用-n,否則所有的行都會(huì)被輸出,這樣就沒(méi)有意義了。
- sed默認(rèn)不直接作用于讀取的文件中。
- -i參數(shù)要慎用,它會(huì)直接修改讀取的文件內(nèi)容。