日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:150日期:2022-06-03 14:04:56
在Unix操作系統(tǒng)中,說實話其字符串的處理功能實在不強。如沒有現(xiàn)成的length(獲取字符串的長度)等函數(shù)。要實現(xiàn)對字符串的操作,往往需要采用 expr命令結(jié)合相關(guān)的通配符來實現(xiàn)一些特定的功能。雖然在Unix操作系統(tǒng)中,對于字符串的操作比較麻煩。但是系統(tǒng)工程師只要知道各種處理方式特點與缺點,那么對癥下藥,仍然可以找到一些簡單的方式來處理系統(tǒng)中的字符串問題。

  一、對用戶輸入的字符串長度進行驗證。

  系統(tǒng)工程師有時候往往需要對用戶輸入的字符串長度進行驗證。如在設(shè)計一個登陸程序時,為了安全起見,可能需要限制用戶密碼輸入的最小位數(shù),如必須是六位以上的密碼等等。此時,其實就是統(tǒng)計用戶輸入的字符串長度問題。如果用戶輸入的密碼長度不夠,就提醒用戶;如果夠的話,就直接保存用戶輸入的信息。所以,簡單的說這可以利用if語句或者while循環(huán)判斷語句來實現(xiàn)。而這個條件則可以利用expr關(guān)鍵字來實現(xiàn)。

  如果用判斷用戶輸入的字符串長度,可以利用如下的格式來寫。Expr “$userpasswd” : ’.*’ 即可。在編寫這個命令時,需要注意一些基本的規(guī)則。如這個expr命令往往需要使用兩個表達式,而且中間需要使用英文狀態(tài)小的冒號進行分割。而且這個兩個表達式的順序也有嚴格的限制。冒號左邊是需要處理的字符串(需要統(tǒng)計長度的字符串或者變量),而冒號右邊則是普通的正則表達式。其次,需要處理的字符串需要使用雙引號括起來。這里跟普通命令中字符串的處理方式有所不同。在普通的命令中,變量不需要使用雙引號因起來。如果引起起來的話,則系統(tǒng)反而會將其當(dāng)作常量來處理。但是如果在if條件語句中將利用這個命令來統(tǒng)計字符串長度時,則需要將變量使用雙引號引起來。這個字符串處理上的差異需要注意,不少系統(tǒng)工程師在這里吃過虧。第三,有時候正則表達式也需要利用單引號來引起來。如上面的’.*’則表示所有匹配的字符。如果不使用單引號的話,系統(tǒng)可能會提示語法錯誤。

  二、截取字符串。

  有時候系統(tǒng)管理員需要截取字符串的自串來完成特定的任務(wù)。如現(xiàn)在系統(tǒng)工程師需要對某個文件根據(jù)系統(tǒng)的時間來進行命名,其命名的規(guī)則為年份(最后兩位)加月份的形式,即0906表示這個文件是09年6月份創(chuàng)建的。因為每個月創(chuàng)建一個獨立的日志文件,為此按這個格式對其進行命名算是比較合理的。但是在系統(tǒng)中實現(xiàn)起來有一定的困難。然后通過date命令加上一些可選項參數(shù)可以截取日期的年份、月份等信息。可是利用date命令截取的年份是四位數(shù)字(如 2009),而不是兩位數(shù)字。這跟系統(tǒng)工程師的需求還有一定的距離。那么如果一定要采用年份的兩位數(shù)字來對文件或者文件夾進行命名,該如何處理呢?

  此時就需要用到expr命令的另一個功能,即截取字符串的功能。一般來說,expr命令主要有三個功能,分別為求字符串的長度、截取字符子串、求一個字符在一個字符串中的位置。當(dāng)然如果這些功能跟其他命令結(jié)合使用的話,可以實現(xiàn)一些比較復(fù)雜的需求。在Unix系統(tǒng)中,如果需要截取字符串的話,筆者首先建議的是采用一些自帶的命令。如date %w則表示顯示今天星期幾。雖然expr命令也可以實現(xiàn)類似的功能,但是初期起來比較麻煩。為此對于截取字符串筆者建議,能夠使用系統(tǒng)自帶功能來實現(xiàn)的,那么就使用系統(tǒng)自帶的命令。如果沒有的話,那么就只有用過expr命令來實現(xiàn)。也就是說,expr 是一個通用的命令,所有的字符串截取工作其都可以完成。只是代碼書寫起來沒有那些系統(tǒng)自帶命令那么簡單。如果現(xiàn)在系統(tǒng)工程師需要截取年份的后兩位數(shù)字,此時該如何處理呢?在系統(tǒng)轉(zhuǎn)義字符的幫助下,可以完成這個功能。如下所示:

  $expr “2009” : ‘..\(..\)’

  在實現(xiàn)這個功能的時候,筆者使用了\這個轉(zhuǎn)義字符。這個正則表達式的含義就表示只考慮前面這個字符串的最后兩個字符,而忽略其他的字符。若需要利用上面這個規(guī)則來進行文件命令的話,只需要先利用這個命令截取年份的最后兩位,然后再把月份加上去即可。上面的字符串2009系統(tǒng)工程師也可以使用變量來代替。系統(tǒng)工程師需要注意的是這個正則表達式的書寫方法。在使用expr命令來對字符串進行處理,其難點就在于這個正則表達式的書寫。通常情況下,只要合理編寫這個正則表達式,則其字符串的處理功能,并不會比數(shù)據(jù)庫系統(tǒng)中字符串處理函數(shù)來的差,甚至有過之而不及。現(xiàn)在的主要問題是,由于經(jīng)驗有限,系統(tǒng)工程師往往很難根據(jù)用戶需求來定義這個正則表達式。就連筆者有時候也會在這里卡住。如果系統(tǒng)工程師想要提高自己正則表達式的書寫能力,那么多看看其他系統(tǒng)工程師書寫的腳本,往往能夠在最短時間內(nèi)提高自己正則表達式的書寫水平。

  三、修改文件的擴展名。

  如現(xiàn)在操作系統(tǒng)中某個目錄下面有很多的sh文件(Unix系統(tǒng)中的配置文件,其實跟txt相同)。現(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命令來完成這個需求。因為當(dāng)文件名的長度不固定時,這個正則表達式比價難寫。要將文件名字符串截取出來(去掉擴展名的名字),有一定的難度。

  在這里,筆者介紹另外一個命令basename命令。其實這也是一個字符串相關(guān)的處理命令。其基本格式為basename text1 text2。他的基本功能就是從第一個字符串中去掉第二個字符串的內(nèi)容。如執(zhí)行命令basename setup.sh sh,則就表示將setup.sh這個字符串中的sh字符串去掉,變?yōu)閟etup.。那么此就可以利用這個命令來進行成批修改擴展名。其具體的實現(xiàn)方式跟上面類似。只是在截取文件名字符串的時候,采用了basename命令,而不是expr命令。而basename命令本身就帶有截取字符串的功能,不需要采用正則表達式。所以實現(xiàn)起來相對簡單一點。

  從這個案例中,筆者也想再次強調(diào)一下一個字符串處理的基本原則。即無論是截取字符串還是對字符串進行的其他操作,如果可以通過系統(tǒng)命令+可選項參數(shù)來實現(xiàn)的,就采用這種實現(xiàn)方式。如果沒有的話,需要考慮能否采用basename等不需要正則表達式的命令來實現(xiàn)。只有在以上兩種方式都不可行的情況下,才考慮使用exper命令來實現(xiàn)。這主要是因為正則表達式的設(shè)計實在比較麻煩,雖然其功能比較強大。利用exper來統(tǒng)計一下字符串的長度還好,但是如果要實現(xiàn)一些復(fù)雜功能,如截取字符串或者確定字符的位置,就需要系統(tǒng)工程師有比較深厚的功底了。
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久亚洲精精品中文字幕| 国产69精品久久| 国产不卡一区| 日韩激情精品| 免费在线观看精品| 欧美日韩一二三四| 国产 日韩 欧美一区| 黄色在线网站噜噜噜| 亚洲精品黄色| 亚洲香蕉久久| 综合国产精品| 日韩一区二区免费看| 视频在线在亚洲| 久久xxxx精品视频| 亚洲精品少妇| 欧美日韩亚洲一区在线观看| 91精品丝袜国产高跟在线| 日韩高清电影一区| 国产麻豆一区| 精品一区二区三区的国产在线观看| 麻豆久久久久久| 欧美激情一区| 一区二区三区四区日本视频| 国产一区二区三区不卡视频网站 | 亚洲少妇诱惑| 亚洲欧美日韩视频二区| 蜜臀av免费一区二区三区| 国产精品色网| 奇米777国产一区国产二区| 欧美一区自拍| 丰满少妇一区| 欧美特黄一区| 欧美日韩一区自拍| 国产美女高潮在线| 国产suv精品一区二区四区视频| 成人精品高清在线视频| 91tv亚洲精品香蕉国产一区| 亚洲欧美日韩在线观看a三区| 69精品国产久热在线观看| 正在播放日韩精品| 美女亚洲一区| 日韩欧美高清一区二区三区| 手机在线电影一区| 日韩午夜av| 国产探花在线精品一区二区| 欧美好骚综合网| 日韩一区网站| 精品中文字幕一区二区三区av| 日韩和欧美一区二区三区| 欧美日韩1区| 日本在线精品| 国产精品一区二区免费福利视频| 亚洲国产成人二区| 亚洲免费福利一区| 久久国产免费| 精品国产网站| 日韩精品国产欧美| 欧美日韩精品免费观看视频完整| 精品视频在线你懂得| 欧美一区=区三区| 日韩精品一卡二卡三卡四卡无卡| 涩涩av在线| 国产日产高清欧美一区二区三区 | 欧美精品一线| 成人在线观看免费视频| 免费在线看一区| 尹人成人综合网| 日韩在线欧美| 麻豆精品新av中文字幕| 国产日韩一区| 欧美午夜三级| 久久激情av| 日韩高清二区| 国产探花一区在线观看| 国产视频一区在线观看一区免费| 日韩高清不卡| 久久国产欧美| 亚洲福利一区| 99国产精品久久久久久久| 婷婷激情久久| aⅴ色国产欧美| 日韩专区欧美专区| 亚洲一区二区日韩| 综合国产视频| 欧美一区激情| 欧美国产极品| 精品国产美女a久久9999| 九九九精品视频| 国产91在线播放精品| 国产精品主播| 精品视频在线观看网站| 高潮一区二区| 在线综合欧美| 一区二区国产精品| 日韩成人精品一区二区三区| 精品日韩在线| 99亚洲视频| 欧美日本二区| 精品国产欧美日韩| 99久久夜色精品国产亚洲狼| 一区二区三区四区在线看| 亚洲天堂免费| 精品久久91| 今天的高清视频免费播放成人| 91精品国产调教在线观看| 99亚洲视频| 天堂av一区| 久久久精品日韩| 久久亚洲美女| 久久精品国产网站| 国产专区一区| 日本视频中文字幕一区二区三区| 日韩理论视频| 日韩一区精品字幕| 成人精品高清在线视频| 亚洲h色精品| 91欧美极品| 狠狠爱成人网| 亚洲性色av| 首页欧美精品中文字幕| 国产成人精品亚洲线观看| 三级一区在线视频先锋| 99久久婷婷| 日本一二区不卡| 青草国产精品| 美美哒免费高清在线观看视频一区二区| 国产精品www.| 日本久久二区| 亚洲欧美日韩精品一区二区 | 日韩av自拍| 久久wwww| 亚州av日韩av| 亚洲二区视频| 中文字幕av一区二区三区人| 欧洲亚洲一区二区三区| 国产一区二区三区天码| 欧美日韩99| 日韩三级久久| 成人午夜国产| 国产一区二区三区不卡av| 国产精品分类| 久久国内精品| 久久精品国产99国产| 奇米色欧美一区二区三区| 亚洲一区二区成人| 视频在线观看国产精品| 亚洲综合不卡| 99pao成人国产永久免费视频| 麻豆精品蜜桃视频网站| 精品国产一区二区三区性色av| 久久国产视频网| 国产精品白丝一区二区三区| 国产精品久av福利在线观看| 国产精品毛片久久久| 国产精品qvod| 国内精品亚洲| 成人va天堂| 蜜臀久久久99精品久久久久久| 日韩精品a在线观看91| 老司机精品视频网| 99热精品久久| 国产精品伦一区二区| 日韩在线短视频| 五月综合激情| 国产欧美日韩一级| 日韩一区欧美| 日韩国产一区二| 欧美精品第一区| 黄毛片在线观看| 日韩午夜一区| 人人爱人人干婷婷丁香亚洲| 欧美成人一二区| 精品在线播放| 97久久亚洲| 日韩另类视频| 日本综合视频| 日韩不卡在线| 国产精品sss在线观看av| 精品中文在线| 国产手机视频一区二区| 国产成年精品| 中文一区一区三区免费在线观 | 免费人成黄页网站在线一区二区| 日本少妇一区二区| 欧美香蕉视频| 青草久久视频| 日韩视频不卡| 美女网站视频一区| 亚洲久久一区| 最新日韩欧美| 私拍精品福利视频在线一区| 国产精品va视频| 亚洲一区二区三区无吗| 亚洲人成在线网站| 国产福利资源一区| 亚洲tv在线| 日韩视频在线一区二区三区 | 国产午夜精品一区在线观看| 中文欧美日韩| 激情欧美亚洲|