您好,登錄后才能下訂單哦!
首先,假設我們有一個文件,叫123.txt,#cat一下看到里面的內容是這樣的:
[root@func-lms-001 ~]# cat 123.txt james curry durant wade yaoming messi [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 ~]# cat 123.txt lebron james curry champion! durant wade yaoming messi [root@func-lms-001 ~]#
現在我們要把 durant前面加上FMVP這幾個字母,按照上面的語句找葫蘆畫瓢的話,應該是:#sed -i '/^durant/s/^/FMVP /' 123.txt 。但是很抱歉,這個語句是錯誤的!因為^是匹配開頭durant的意思,而我們再看一下durant那一行的開頭是空格。
那么就要用liunx的正則來匹配空格,于是這句話就變成了:#sed -i '/^\s\+durant/s/^/FMVP/' 123.txt ,^\s\+這個就是正則里匹配空格的意思 。
#cat一下:
[root@func-lms-001 ~]# cat 123.txt lebron james curry champion! FMVP durant wade yaoming messi [root@func-lms-001 ~]#
那么現在要在messi后面加上"GOAL !!!",就很簡單了。語句是:#sed -i '/^\s\+messi/s/$/ GOAL !!!/' 123.txt 。
以上我們把有/無空格情況下的首尾添加字符都練習了一遍,下面我們要看看如果要在中間添加怎么辦?
比如說,有一天苦逼的運維接到開發PL的郵件,說”由于安全基線要求,現在需要監聽內網端口“,具體的需求就是把所有含tomcat的模塊里的server.xml的文件里添加上內網IP。
原有的server.xml的節選如下:
<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>
現在要把<Connector port="8099" protocol="AJP/1.3" redirectPort="8443" /> 這一句里面加上內網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 '/<Connector port="8099"/s/port="8099"/port="8099" address="1.2.3.4"/g' server.xml
答案2:
sed -i 's@Connector port="8099"@& address="1.2.3.4"@' server.xml
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。