日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Unix操作系統(tǒng)中處理字符串問題的簡單方式( 二 )


$expr “2009 : ‘..(..)’
在實現(xiàn)這個功能的時候,筆者使用了這個轉(zhuǎn)義字符 。這個正則表達式的含義就表示只考慮前面這個字符串的最后兩個字符,而忽略其他的字符 。若需要利用上面這個規(guī)則來進行文件命令的話,只需要先利用這個命令截取年份的最后兩位,然后再把月份加上去即可 。上面的字符串2009系統(tǒng)工程師也可以使用變量來代替 。系統(tǒng)工程師需要注意的是這個正則表達式的書寫方法 。在使用expr命令來對字符串進行處理,其難點就在于這個正則表達式的書寫 。通常情況下,只要合理編寫這個正則表達式,則其字符串的處理功能,并不會比數(shù)據(jù)庫系統(tǒng)中字符串處理函數(shù)來的差,甚至有過之而不及 ?,F(xiàn)在的主要問題是,由于經(jīng)驗有限,系統(tǒng)工程師往往很難根據(jù)用戶需求來定義這個正則表達式 。就連筆者有時候也會在這里卡住 。如果系統(tǒng)工程師想要提高自己正則表達式的書寫能力,那么多看看其他系統(tǒng)工程師書寫的腳本,往往能夠在最短時間內(nèi)提高自己正則表達式的書寫水平 。
三、修改文件的擴展名 。
如現(xiàn)在操作系統(tǒng)中某個目錄下面有很多的sh文件(Unix系統(tǒng)中的配置文件,其實跟txt相同) ?,F(xiàn)在系統(tǒng)工程師需要將這些sh文件的擴展名改掉,全部改為txt 。雖然可以通過一個個的手工修改來實現(xiàn),但是處理起來的難度比較大 。
如果要實現(xiàn)批量更改文件擴展名的話,則可以借助for等循環(huán)語句來實現(xiàn) 。不過循環(huán)語句內(nèi)部的操作有兩種實現(xiàn)方式 。一是采用expr命令 。其實對文件名進行操作,說到底就是對字符串的操作 。因為文件名字也是一種字符串 。如系統(tǒng)工程師可以先利用expr命令截取字符串的功能,將擴展名前面的字符串截取出來,然后將其保存在一個變量中,如filenameshort 。然后再利用系統(tǒng)的重命名或者移動文件的命令,對系統(tǒng)進行重命名,如$filenameshortdoc 。這就可以實現(xiàn)更改擴展名的需求 。不過筆者并不建議采用這個expr命令來完成這個需求 。因為當文件名的長度不固定時,這個正則表達式比價難寫 。要將文件名字符串截取出來(去掉擴展名的名字),有一定的難度 。
在這里,筆者介紹另外一個命令basename命令 。其實這也是一個字符串相關的處理命令 。其基本格式為basename text1 text2 。他的基本功能就是從第一個字符串中去掉第二個字符串的內(nèi)容 。如執(zhí)行命令basename setup.sh sh,則就表示將setup.sh這個字符串中的sh字符串去掉,變?yōu)閟etup. 。那么此就可以利用這個命令來進行成批修改擴展名 。其具體的實現(xiàn)方式跟上面類似 。只是在截取文件名字符串的時候,采用了basename命令,而不是expr命令 。而basename命令本身就帶有截取字符串的功能,不需要采用正則表達式 。所以實現(xiàn)起來相對簡單一點 。
【Unix操作系統(tǒng)中處理字符串問題的簡單方式】從這個案例中,筆者也想再次強調(diào)一下一個字符串處理的基本原則 。即無論是截取字符串還是對字符串進行的其他操作,如果可以通過系統(tǒng)命令 可選項參數(shù)來實現(xiàn)的,就采用這種實現(xiàn)方式 。如果沒有的話,需要考慮能否采用basename等不需要正則表達式的命令來實現(xiàn) 。只有在以上兩種方式都不可行的情況下,才考慮使用exper命令來實現(xiàn) 。這主要是因為正則表達式的設計實在比較麻煩,雖然其功能比較強大 。利用exper來統(tǒng)計一下字符串的長度還好,但是如果要實現(xiàn)一些復雜功能,如截取字符串或者確定字符的位置,就需要系統(tǒng)工程師有比較深厚的功底了 。

推薦閱讀