上一節(jié)我們講了unix sed編輯器的文件修改,現(xiàn)在我們來(lái)講講 Unix sed如何替換文件內(nèi)容,文件修改編輯在操作系統(tǒng)中使用廣范,希望大家能好好掌握.
本節(jié)將使用sample1.txt文件作為示例,文件內(nèi)容如下,都是些水果..:
- apple
- orange
- banana
- pappaya
1.向每一行的開(kāi)頭添加內(nèi)容,這里我們添加“Fruit:”
- $ sed ‘s/^/Fruit: /‘ sample1.txt
- Fruit: apple
- Fruit: orange
- Fruit: banana
- Fruit: pappaya
解析:s代表substitution,也就是替換,s之后是要替換/匹配的內(nèi)容,斜線/用來(lái)分隔s以及要替換的原始內(nèi)容還有要替換的最終內(nèi)容,而’^’符號(hào)是說(shuō)一個(gè)正則,用來(lái)匹配每一行的開(kāi)頭,匹配成功后在開(kāi)頭加上’Fruit:’.
2.向每一行的行尾添加內(nèi)容:
- $ sed ‘s/$/ Fruit/‘ sample1.txt
- apple Fruit
- orange Fruit
- banana Fruit
- pappaya Fruit
注意:這里的$和上一節(jié)的$符號(hào)表示的意義不同,這里則是表示行尾.
3.如何替換指定的字符,這里將小寫(xiě)a替換成大寫(xiě)A.
- $ sed ‘s/a/A/‘ sample1.txt
- Apple
- orAnge
- bAnana
- pAppaya
注意:僅僅將每一行的第一個(gè)a替換了,不是所有,本例表示替換單個(gè)字符,你可以替換一個(gè)單詞都是可以的.
4.如何替換行內(nèi)所有的字符,用A替換a.
- $ sed ‘s/a/A/g’ sample1.txt
- Apple
- orAnge
- bAnAnA
- pAppAyA
注意:只是加了一個(gè)g選項(xiàng),g為global的簡(jiǎn)寫(xiě),就是全局,全部的意思.
5.如何替換第二次出現(xiàn)的a?
- $ sed ‘s/a/A/2’ sample1.txt
- apple
- orange
- banAna
- pappAya
不使用g,而是使用數(shù)字來(lái)表示行內(nèi)第幾次出現(xiàn)的a,結(jié)果如上.
6.如何替換第二次之后的所有a呢?
- $ sed ‘s/a/A/2g’ sample1.txt
- apple
- orange
- banAnA
- pappAyA
很好理解對(duì)吧.
7.如果只想替換第三行的a呢?
- $ sed ‘3s/a/A/g’ sample1.txt
- apple
- orange
- bAnAnA
- pappaya
回想一下第一節(jié),在執(zhí)行命令之前,會(huì)判斷當(dāng)前address是否滿足條件,3就是地址.
8.想替換一個(gè)范圍行內(nèi)的數(shù)據(jù)呢.
- $ sed ‘1,3s/a/A/g’ sample1.txt
- Apple
- orAnge
- bAnAnA
- pappaya
逗號(hào)隔開(kāi),即可.
9.如何替換整行呢?比如用apple is a Fruit替換apple
- $ sed ‘s/./& is a Fruit/‘ sample1.txt
- apple is a Fruit
- orange is a Fruit
- banana is a Fruit
- pappaya is a Fruit
這里‘&’符號(hào)標(biāo)識(shí)了模式匹配到的內(nèi)容,而.匹配了正行,.表示任意字符,*表示一個(gè)或多個(gè),也就是匹配了整行,&因此就是整行內(nèi)容,用來(lái)重命名一組文件的時(shí)候非常有用.
10.如何進(jìn)行多個(gè)替換,比如用A替換a,用P替換p
- $ sed ‘s/a/A/g; s/p/P/g’ sample1.txt
- APPle
- orAnge
- bAnAnA
- PAPPAyA --Vevb.com
也就是用分號(hào)分開(kāi)即可,或者也可以通過(guò)-e參數(shù)來(lái)做.
- $ sed -e ‘s/a/A/g’ -e ‘s/p/P/g’ sample1.txt
- APPle
- orAnge
- bAnAnA
- PAPPAyA
-e 選項(xiàng)就是當(dāng)需要替換多個(gè)的時(shí)候來(lái)用的.
另外,要是替換的太多,也可以通過(guò)右斜線來(lái)分成多行.
- $ sed -e ‘s/a/A/g’ > -e ‘s/p/P/g’ sample1.txt
- APPle
- orAnge
- bAnAnA
- PAPPAyA
相信通過(guò)本文實(shí)例分析,平時(shí)的文件內(nèi)容替換就很簡(jiǎn)單了.
新聞熱點(diǎn)
疑難解答
圖片精選