sed工具小結(jié)

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)容。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容