linux || sed(2)

調(diào)用sed有三種方式

  • 在命令行鍵入命令;
  • 將sed命令插入腳本文件蜘腌,然后調(diào)用sed;
  • 將sed命令插入腳本文件饵隙,并使sed腳本可執(zhí)行撮珠。

1.使用sed命令行格式為:
sed [options] sed命令 輸入文件

記住在命令行使用sed命令時(shí),實(shí)際命令要加單引號(hào)金矛。sed也允許加雙引號(hào)芯急。

2.使用sed腳本文件勺届,格式為:
sed [options] -f sed腳本文件 輸入文件

3.要使用第一行具有sed命令解釋器的sed腳本文件,其格式為:
sed腳本文件 [options] 輸入文件

不管是使用shell命令行方式或腳本文件方式志于,如果沒有指定輸入文件涮因, sed從標(biāo)準(zhǔn)輸入中
接受輸入,一般是鍵盤或重定向結(jié)果伺绽。

sed options如下:
  • n 不打友荨;sed不寫編輯行到標(biāo)準(zhǔn)輸出奈应,缺省為打印所有行(編輯和未編輯)澜掩。p命令可以用來打印編輯行。
  • e∶進(jìn)行多項(xiàng)編輯杖挣,即對(duì)輸入行應(yīng)用多條sed命令時(shí)使用. 直接在指令列模式上進(jìn)行 sed 的動(dòng)作編輯
  • c 下一命令是編輯命令肩榕。使用多項(xiàng)編輯時(shí)加入此選項(xiàng)。如果只用到一條sed命令惩妇,此選項(xiàng)無用株汉,但指定它也沒有關(guān)系。
  • f 如果正在調(diào)用sed腳本文件歌殃,使用此選項(xiàng)乔妈。
  • i∶直接修改讀取的文件內(nèi)容,而不是由屏幕輸出
1.使用sed在文件中查詢文本的方式

sed瀏覽輸入文件時(shí)氓皱,缺省從第一行開始路召,有兩種方式定位文本:
1)使用行號(hào),可以是一個(gè)簡單數(shù)字波材,或是一個(gè)行號(hào)范圍股淡。
2 ) 使用正則表達(dá)式

使用sed定位文本的一些方式
命令 描述
x x為一行號(hào),如1
x , y 表示行號(hào)范圍從x到y(tǒng)廷区,如2唯灵,5表示從第2行到第5行
/pattern/ 查詢包含模式的行。例如/disk/或/[a-z]/
/pattern/pattern/ 查詢包含兩個(gè)模式的行躲因。例如/disk/disks/
/pattern/,x 在給定行號(hào)上查詢包含模式的行早敬。如/ ibbon/ , 3
x , /pattern/ 通過行號(hào)和模式查詢匹配行。3,/vdu/
x , y ! 查詢不包含指定行號(hào)x和y的行大脉。1 , 2 !
2.基本sed編輯命令

sed編輯命令

命令 描述
p 打印匹配行
= 顯示文件行號(hào)
a \ 在定位行號(hào)后附加新文本信息
i \ 在定位行號(hào)后插入新文本信息
d 刪除定位行
c \ 用新文本替換定位文本
s 使用替換模式替換相應(yīng)模式
r 從另一個(gè)文件中讀文本
w 寫文本到一個(gè)文件
q 第一個(gè)模式匹配完成后推出或立即推出
l 顯示與八進(jìn)制ASCII代碼等價(jià)的控制字符
{ } 在定位行執(zhí)行的命令組
n 從另一個(gè)文件中讀文本下一行搞监,并附加在下一行
g 將模式2粘貼到/pattern n/
y 傳送字符
n 延續(xù)到下一輸入行;允許跨行的模式匹配語句
3.sed和正則表達(dá)式

sed正則

命令 描述
^ 匹配行開始镰矿,如:/^sed/匹配所有以sed開頭的行琐驴。
$ 匹配行結(jié)束,如:/sed$/匹配所有以sed結(jié)尾的行。
. 匹配一個(gè)非換行符的任意字符绝淡,如:/s.d/匹配s后接一個(gè)任意字符宙刘,最后是d。
* 匹配0個(gè)或多個(gè)字符牢酵,如:/*sed/匹配所有模板是一個(gè)或多個(gè)空格后緊跟sed的行悬包。
[] 匹配一個(gè)指定范圍內(nèi)的字符,如/[sS]ed/匹配sed和Sed馍乙。
[^] 匹配一個(gè)不在指定范圍內(nèi)的字符布近,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個(gè)字母開頭,緊跟ed的行丝格。
(..) 匹配子串撑瞧,保存匹配的字符,如s/(love)able/\1rs显蝌,loveable被替換成lovers预伺。
& 保存搜索字符用來替換其他字符,如s/love/&/曼尊,love這成love酬诀。
< 匹配單詞的開始,如:/<love/匹配包含以love開頭的單詞的行骆撇。
> 匹配單詞的結(jié)束料滥,如/love>/匹配包含以love結(jié)尾的單詞的行。
x{m} 重復(fù)字符x艾船,m次,如:/0{5}/匹配包含5個(gè)0的行高每。
x{m,} 重復(fù)字符x屿岂,至少m次,如:/0{5,}/匹配至少有5個(gè)0的行鲸匿。
x{m,n} 重復(fù)字符x爷怀,至少m次,不多于n次带欢,如:/0{5,10}/匹配5~10個(gè)0的行运授。
4.基本sed使用舉例(都是要test.txt文件)

1)使用p(rint)顯示行
ptint命令格式為[ address [,address ] P乔煞。顯示文本行必須提供sed命令行號(hào)吁朦。

pengzw@super-server:~$ cat test.txt 
Hello,world!
Write a word!
I love dog!
Good good study, day day up!
I have $1.
pengzw@super-server:~$ sed -n '2p' test.txt
Write a word!

2)打印范圍:可以指定行的范圍,現(xiàn)打印1到3行渡贾,用逗號(hào)分隔行號(hào)逗宜。

pengzw@super-server:~$ sed -n '1,2p' test.txt
Hello,world!
Write a word!

3)打印模式:匹配單詞day,并打印此行,使用模式/pattren/

pengzw@super-server:~$ sed -n '/day/'p test.txt
Good good study, day day up!

4)使用模式和行號(hào)進(jìn)行查詢:4 , /the/纺讲,但是有一個(gè)問題擂仍,如果行號(hào)指定不對(duì),會(huì)出現(xiàn)指定行和匹配day的行熬甚。

pengzw@super-server:~$ sed -n '4,/day/'p test.txt
Good good study, day day up!
pengzw@super-server:~$ sed -n '3,/day/'p test.txt
I love dog!
Good good study, day day up!

5)匹配元字符
匹配元字符$前逢渔,必須使用反斜線\屏蔽其特殊含義。模式為/$/ p乡括。

pengzw@super-server:~$ sed -n '/\$/'p test.txt
I have $1.

6)顯示整個(gè)文件:1,$p肃廓,$意為最后一行。

pengzw@super-server:~$ sed -n '1,$p' test.txt
Hello,world!
Write a word!
I love dog!
Good good study, day day up!
I have $1.

7)任意字符:

pengzw@super-server:~$ sed -n '/.*u/'p test.txt
Good good study, day day up!

8)首行:比較兩種寫法粟判,一般都是第二種

pengzw@super-server:~$ sed -n '1'p test.txt
Hello,world!
pengzw@super-server:~$ sed -n '1p' test.txt
Hello,world!

9)末行

pengzw@super-server:~$ sed -n '$p' test.txt
I have $1.

10)打印行號(hào)
要打印行號(hào)亿昏,使用等號(hào)=。打印模式匹配的行號(hào)档礁,使用格式/pattern/ =角钩。
整個(gè)文件都打印出來,并且匹配行打印了行號(hào)呻澜。

pengzw@super-server:~$ sed -e '/.u/=' test.txt
Hello,world!
Write a word!
I love dog!
4
Good good study, day day up!
I have $1.

如果只關(guān)心實(shí)際行號(hào)递礼,使用-n選項(xiàng)。

pengzw@super-server:~$ sed -n '/.u/=' test.txt
4

如果只打印行號(hào)及匹配行羹幸,必須使用兩個(gè)sed命令脊髓,并使用e選項(xiàng)。第一個(gè)命令打印模式
匹配行栅受,第二個(gè)使用=選項(xiàng)打印行號(hào)将硝,格式為sed -n -e /pattern/p -e /pattern/=。

pengzw@super-server:~$ sed -n -e '/u/p' -e '/u/='  test.txt
Good good study, day day up!
4

參考:

linux與unix shell編程指南.pdf
https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屏镊,一起剝皮案震驚了整個(gè)濱河市依疼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌而芥,老刑警劉巖律罢,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棍丐,居然都是意外死亡误辑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門歌逢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巾钉,“玉大人,你說我怎么就攤上這事趋翻【α眨” “怎么了盒蟆?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長师骗。 經(jīng)常有香客問我历等,道長,這世上最難降的妖魔是什么辟癌? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任寒屯,我火速辦了婚禮,結(jié)果婚禮上黍少,老公的妹妹穿的比我還像新娘寡夹。我一直安慰自己,他們只是感情好厂置,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布菩掏。 她就那樣靜靜地躺著,像睡著了一般昵济。 火紅的嫁衣襯著肌膚如雪智绸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天访忿,我揣著相機(jī)與錄音瞧栗,去河邊找鬼。 笑死海铆,一個(gè)胖子當(dāng)著我的面吹牛迹恐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卧斟,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼殴边,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了珍语?” 一聲冷哼從身側(cè)響起找都,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廊酣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赏枚,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亡驰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饿幅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凡辱。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖栗恩,靈堂內(nèi)的尸體忽然破棺而出透乾,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布乳乌,位于F島的核電站捧韵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏汉操。R本人自食惡果不足惜再来,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磷瘤。 院中可真熱鬧芒篷,春花似錦、人聲如沸采缚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扳抽。三九已至篡帕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摔蓝,已是汗流浹背赂苗。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贮尉,地道東北人拌滋。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像猜谚,于是被迫代替她去往敵國和親败砂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 本文承接之前寫的三十分鐘學(xué)會(huì)AWK一文魏铅,在學(xué)習(xí)完AWK之后昌犹,趁熱打鐵又學(xué)習(xí)了一下SED泣懊,不得不說這兩個(gè)工具真的堪稱...
    mylxsw閱讀 4,398評(píng)論 3 74
  • grep擅長查找煎楣,awk擅長分析(select)烛占,sed擅長批量編輯行 概述 SED的英文全稱是 Stream E...
    數(shù)據(jù)萌新閱讀 420評(píng)論 0 1
  • grep擅長查找取胎,awk擅長分析(select)振湾,sed擅長批量編輯行 概述 SED的英文全稱是 Stream E...
    piziyang12138閱讀 935評(píng)論 0 3
  • grep擅長查找前翎,awk擅長分析(select)带污,sed擅長批量編輯行概述SED的英文全稱是 Stream EDi...
    Arroganter閱讀 1,074評(píng)論 0 7
  • 周二早晨簽了offer体箕。前幾天還在糾結(jié)是去鵝廠還是去創(chuàng)業(yè)公司悟泵,今天想通了杈笔。作為產(chǎn)品新人,騰訊是全國最好的學(xué)校糕非。剛畢...
    huglee閱讀 1,011評(píng)論 1 1