建站服務(wù)器
首先,假設(shè)我們有一個(gè)文件,叫123.txt,#cat一下看到里面的內(nèi)容是這樣的:
[root@func-lms-001~]#cat123.txtjamescurrydurantwadeyaomingmessi[root@func-lms-001~]#
如果我們想在james前面加上lebron,那么采用的sed語句就是:#sed -i \\\’/^james/s/^/lebron /\\\’ 123.txt,如果要在curry后面加上 champion,那么采用的語句就是:#sed -i \\\’/^curry/s/$/ champion!/\\\’ 123.txt 。
使用完上面兩句話之后,再#cat一下,看下效果:
[root@func-lms-001~]#cat123.txtlebronjamescurrychampion!durantwadeyaomingmessi[root@func-lms-001~]#現(xiàn)在我們要把 durant前面加上fmvp這幾個(gè)字母,按照上面的語句找葫蘆畫瓢的話,應(yīng)該是:#sed -i \\\’/^durant/s/^/fmvp /\\\’ 123.txt 。但是很抱歉,這個(gè)語句是錯(cuò)誤的!因?yàn)閊是匹配開頭durant的意思,而我們再看一下durant那一行的開頭是空格。
那么就要用liunx的正則來匹配空格,于是這句話就變成了:#sed -i \\\’/^\\\\s\\\\ durant/s/^/fmvp/\\\’ 123.txt ,^\\\\s\\\\ 這個(gè)就是正則里匹配空格的意思 。
#cat一下:
[root@func-lms-001~]#cat123.txtlebronjamescurrychampion!fmvpdurantwadeyaomingmessi[root@func-lms-001~]#
那么現(xiàn)在要在messi后面加上goal !!!,就很簡單了。語句是:#sed -i \\\’/^\\\\s\\\\ messi/s/$/ goal !!!/\\\’ 123.txt 。
以上我們把有/無空格情況下的首尾添加字符都練習(xí)了一遍,下面我們要看看如果要在中間添加怎么辦?
比如說,有一天苦逼的運(yùn)維接到開發(fā)pl的郵件,說”由于安全基線要求,現(xiàn)在需要監(jiān)聽內(nèi)網(wǎng)端口“,具體的需求就是把所有含tomcat的模塊里的server.xml的文件里添加上內(nèi)網(wǎng)ip。
原有的server.xml的節(jié)選如下:
<service name=lms>
<connector port=8080 connectiontimeout=20000 protocol=org.apache.coyote.http11.http11nioprotocol redirectport=8443 enablelookups=false disableuploadtimeout=true maxthreads=500 minsparethreads=20 acceptcount=100/>
<connector port=8088 connectiontimeout=20000 protocol=org.apache.coyote.http11.http11nioprotocol redirectport=8443 enablelookups=false disableuploadtimeout=true maxthreads=500 minsparethreads=20 acceptcount=100/>
<connector port=8099 protocol=ajp/1.3 redirectport=8443 />
<engine defaulthost=localhost name=catalina>
<realm classname=org.apache.catalina.realm.lockoutrealm>
<realm classname=org.apache.catalina.realm.userdatabaserealm resourcename=userdatabase />
</realm>
現(xiàn)在要把<connector port=8099 protocol=ajp/1.3 redirectport=8443 /> 這一句里面加上內(nèi)網(wǎng)ip,改成這樣:
<service name=lms>
<connector port=8080 connectiontimeout=20000 protocol=org.apache.coyote.http11.http11nioprotocol redirectport=8443 enablelookups=false disableuploadtimeout=true maxthreads=500 minsparethreads=20 acceptcount=100/>
<connector port=8088 connectiontimeout=20000 protocol=org.apache.coyote.http11.http11nioprotocol redirectport=8443 enablelookups=false disableuploadtimeout=true maxthreads=500 minsparethreads=20 acceptcount=100/>
<connector port=8099 address=1.2.3.4 protocol=ajp/1.3 redirectport=8443 />
<engine defaulthost=localhost name=catalina>
<realm classname=org.apache.catalina.realm.lockoutrealm>
<realm classname=org.apache.catalina.realm.userdatabaserealm resourcename=userdatabase />
</realm>
請問怎么做?
答案1:
sed-i\\\'/<connectorport=8099/s/port=8099/port=8099address=1.2.3.4/g\\\'server.xml答案2:
sed-i\\\'s@connectorport=8099@&address=1.2.3.4@\\\'server.xml