歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

學會截取Unix字符串的方法

有時候系統管理員需要截取Unix字符串的自串來完成特定的任務。如現在系統工程師需要對某個文件根據系統的時間來進行命名,其命名的規則為年份(最後兩位)加月份的形式,即0906表示這個文件是09年6月份創建的。因為每個月創建一個獨立的日志文件,為此按這個格式對其進行命名算是比較合理的。

但是在系統中實現起來有一定的困難。然後通過date命令加上一些可選項參數可以截取日期的年份、月份等信息。可是利用date命令截取的年份是四位數字(如 2009),而不是兩位數字。這跟系統工程師的需求還有一定的距離。那麼如果一定要采用年份的兩位數字來對文件或者文件夾進行命名,該如何處理呢?

此時就需要用到expr命令的另一個功能,即截取Unix字符串的功能。一般來說,expr命令主要有三個功能,分別為求字符串的長度、截取字符子串、求一個字符在一個Unix字符串中的位置。當然如果這些功能跟其他命令結合使用的話,可以實現一些比較復雜的需求。在Unix系統中,如果需要截取字符串的話,筆者首先建議的是采用一些自帶的命令。

如date %w則表示顯示今天星期幾。雖然expr命令也可以實現類似的功能,但是初期起來比較麻煩。為此對於截取Unix字符串筆者建議,能夠使用系統自帶功能來實現的,那麼就使用系統自帶的命令。如果沒有的話,那麼就只有用過expr命令來實現。也就是說,expr 是一個通用的命令,所有的Unix字符串截取工作其都可以完成。

只是代碼書寫起來沒有那些系統自帶命令那麼簡單。如果現在系統工程師需要截取年份的後兩位數字,此時該如何處理呢?在系統轉義字符的幫助下,可以完成這個功能。如下所示:$expr “2009” : ‘..\(..\)’

在實現這個功能的時候,筆者使用了\這個轉義字符。這個正則表達式的含義就表示只考慮前面這個Unix字符串的最後兩個字符,而忽略其他的字符。若需要利用上面這個規則來進行文件命令的話,只需要先利用這個命令截取年份的最後兩位,然後再把月份加上去即可。

上面的Unix字符串2009系統工程師也可以使用變量來代替。系統工程師需要注意的是這個正則表達式的書寫方法。在使用expr命令來對字符串進行處理,其難點就在於這個正則表達式的書寫。

通常情況下,只要合理編寫這個正則表達式,則其Unix字符串的處理功能,並不會比數據庫系統中Unix字符串處理函數來的差,甚至有過之而不及。現在的主要問題是,由於經驗有限,系統工程師往往很難根據用戶需求來定義這個正則表達式。

就連筆者有時候也會在這裡卡住。如果系統工程師想要提高自己正則表達式的書寫能力,那麼多看看其他系統工程師書寫的腳本,往往能夠在最短時間內提高自己正則表達式的書寫水平。

Copyright © Linux教程網 All Rights Reserved