在字符串處理中,最重要的就是查找和替換。
sed [選項] 處理腳本 輸入文件...
-r是用于在sed命令中使用擴(kuò)展正則表達(dá)式的選項。如果沒有指定選項,sed命令會默認(rèn)將基本正則表達(dá)式視為正則表達(dá)式。
-e選項用于為sed命令設(shè)置要執(zhí)行的處理腳本。如果沒有指定任何選項,sed命令會將第1個非選項的參數(shù)作為處理腳本來運(yùn)行。例如指定多個處理腳本
$ sed -e 's/:/,/g' -e 's/bin//g' /etc/passwd root,x,0,0,root,/root,//bash ,x,1,1,,/,/s/nologin daemon,x,2,2,daemon,/s,/s/nologin adm,x,3,4,adm,/var/adm,/s/nologin lp,x,4,7,lp,/var/spool/lpd,/s/nologin sync,x,5,0,sync,/s,//sync ……以下省略……
-i選項的后面指定一個字符串參數(shù),sed命令還會對編輯之前的原文件備份
例如將:(冒號)替換為_(下劃線)
$sed's/:/_/g'/etc/passwd
在上面的示例中,處理腳本s/:/_/并沒有使用地址。如果像這樣省略了地址,則文件的全部內(nèi)容都會成為處理對象。
例如第2-4行作為命令的處理對象
$sed'2,4s/:/_/g'/etc/passwd
▼使用s命令將匹配到指定模式的內(nèi)容刪除
“替換后字符串”也可以是空字符串。這就相當(dāng)于刪除匹配到的部分,s命令末尾的標(biāo)志是可以控制替換操作的符號,常用的主要是g和i。標(biāo)志g表示對匹配到匹配模式的所有結(jié)果進(jìn)行替換。i就代表匹配到的第一行。
如果不需要使用任何標(biāo)志,則標(biāo)志部分可以省略。此外,如果要同時使用多個標(biāo)志,可以像ig或gi這樣以任意的順序指定多個標(biāo)志。
使用/對/字符進(jìn)行轉(zhuǎn)義
$ sed 's//bin///usr/bin//g' /etc/passwd root:x:0:0:root:/root:/usr/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ……
使用%作為分隔符
$ sed 's%/bin/%/usr/bin/%g' /etc/passwd root:x:0:0:root:/root:/usr/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ……
審核編輯:湯梓紅
-
SED
+關(guān)注
關(guān)注
0文章
23瀏覽量
27049 -
字符串
+關(guān)注
關(guān)注
1文章
567瀏覽量
20435 -
Shell
+關(guān)注
關(guān)注
1文章
361瀏覽量
23234 -
腳本
+關(guān)注
關(guān)注
1文章
384瀏覽量
14793 -
正則表達(dá)式
+關(guān)注
關(guān)注
0文章
26瀏覽量
3468
原文標(biāo)題:shell腳本基礎(chǔ)(七)正則表達(dá)式sed
文章出處:【微信號:FPGA學(xué)姐,微信公眾號:FPGA學(xué)姐】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論