2018-08-20 13:02:15 1135瀏覽
今天扣丁學(xué)堂紅帽Linux培訓(xùn)老師給大家介紹一下關(guān)于sed流編輯器命令,首先sed是streameditor的簡稱,也就是流編輯器。它一次處理一行內(nèi)容,處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間”(patternspace),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲(chǔ)輸出。sed [option] 'command' input_file -n 使用安靜(silent)模式(想不通為什么不是-s)。在一般sed的用法中,所有來自stdin的內(nèi)容一般都會(huì)被列出到屏幕上。但如果加上-n參數(shù)后,則只有經(jīng)過sed特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來;其中option是可選的,常用的option有如下幾種: -e 直接在指令列模式上進(jìn)行 sed 的動(dòng)作編輯; -f 直接將 sed 的動(dòng)作寫在一個(gè)文件內(nèi), -f filename 則可以執(zhí)行filename內(nèi)的sed命令; -r 讓sed命令支持?jǐn)U展的正則表達(dá)式(默認(rèn)是基礎(chǔ)正則表達(dá)式); -i 直接修改讀取的文件內(nèi)容,而不是由屏幕輸出。 常用的命令有以下幾種: a \: append即追加字符串, a \的后面跟上字符串s(多行字符串可以用\n分隔),則會(huì)在當(dāng)前選擇的行的后面都加上字符串s; c \: 取代/替換字符串,c \后面跟上字符串s(多行字符串可以用\n分隔),則會(huì)將當(dāng)前選中的行替換成字符串s; d: delete即刪除,該命令會(huì)將當(dāng)前選中的行刪除; i \: insert即插入字符串,i \后面跟上字符串s(多行字符串可以用\n分隔),則會(huì)在當(dāng)前選中的行的前面都插入字符串s; p: print即打印,該命令會(huì)打印當(dāng)前選擇的行到屏幕上; s: 替換,通常s命令的用法是這樣的:1,2s/old/new/g,將old字符串替換成new字符串 動(dòng)作說明: [n1[,n2]]function n1, n2 :不見得會(huì)存在,一般代表『選擇進(jìn)行動(dòng)作的行數(shù)』,舉例來說,如果我的動(dòng)作是需要在 10 到 20 行之間進(jìn)行的,則『 10,20[動(dòng)作行為] 』
[root@master rh]# cat test.txt this is first line this is second line this is third line this is fourth line this fifth line happy everyday end
[root@master rh]# sed '1a \add one' test.txt this is first line add one this is second line this is third line this is fourth line this fifth line happy everyday end
[root@master rh]# sed '1,$a \add one' test.txt this is first line add one this is second line add one this is third line add one this is fourth line add one this fifth line add one happy everyday add one end add one
[root@master rh]# sed '/first/a \add one' test.txt this is first line add one this is second line this is third line this is fourth line this fifth line happy everyday end
[root@master rh]# sed '/^ha.*day$/a \add one' test.txt this is first line this is second line this is third line this is fourth line this fifth line happy everyday add one end
[root@master rh]# sed '$c \add one' test.txt this is first line this is second line this is third line this is fourth line this fifth line happy everyday add one
[root@master rh]# sed '4,$c \add one' test.txt this is first line this is second line this is third line add one
[root@master rh]# sed '/^ha.*day$/c \replace line' test.txt this is first line this is second line this is third line this is fourth line this fifth line replace line end
[root@master rh]# sed '/^ha.*day$/d' test.txt this is first line this is second line this is third line this is fourth line this fifth line end
[root@master rh]# sed '4,$d' test.txt this is first line this is second line this is third line
[root@master rh]# sed -n '4,$p' test.txt this is fourth line this fifth line happy everyday end
[root@master rh]# sed -n '/^ha.*day$/p' test.txt happy everyday
[root@master rh]# sed 's/line/text/g' test.txt this is first text this is second text this is third text this is fourth text this fifth text happy everyday end
[root@master rh]# sed '/^ha.*day$/s/happy/very happy/g' test.txt this is first line this is second line this is third line this is fourth line this fifth line very happy everyday end
[root@master rh]# sed 's/\(.*\)line$/\1/g' test.txt this is first this is second this is third this is fourth this fifth happy everyday end
[root@master rh]# sed 's/\(.*\)is\(.*\)line/\1\2/g' test.txt this first this second this third this fourth th fifth happy everyday end
正則表達(dá)式中is兩邊的部分可以用\1和\2表示,該例子的作用其實(shí)就是刪除中間部分的is,希望對(duì)同學(xué)們有所幫助,想要了解更多關(guān)于Linux開發(fā)方面內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢??鄱W(xué)堂有大量的Linux視頻教程讓學(xué)員免費(fèi)觀看學(xué)習(xí),想要快速學(xué)習(xí)Linux開發(fā)就到由專業(yè)老師授課的扣丁學(xué)堂學(xué)習(xí)吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>