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

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

Unix中選擇合適的字符串處理方式

瀏覽:199日期:2024-07-03 09:41:36

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

一、對用戶輸入的字符串長度進(jìn)行驗(yàn)證。

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

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

二、截取字符串。

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

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

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

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

三、修改文件的擴(kuò)展名。

如現(xiàn)在操作系統(tǒng)中某個(gè)目錄下面有很多的sh文件(Unix系統(tǒng)中的配置文件,其實(shí)跟txt相同)。現(xiàn)在系統(tǒng)工程師需要將這些sh文件的擴(kuò)展名改掉,全部改為txt。雖然可以通過一個(gè)個(gè)的手工修改來實(shí)現(xiàn),但是處理起來的難度比較大。

如果要實(shí)現(xiàn)批量更改文件擴(kuò)展名的話,則可以借助for等循環(huán)語句來實(shí)現(xiàn)。不過循環(huán)語句內(nèi)部的操作有兩種實(shí)現(xiàn)方式。一是采用expr命令。其實(shí)對文件名進(jìn)行操作,說到底就是對字符串的操作。因?yàn)槲募忠彩且环N字符串。如系統(tǒng)工程師可以先利用expr命令截取字符串的功能,將擴(kuò)展名前面的字符串截取出來,然后將其保存在一個(gè)變量中,如filenameshort。然后再利用系統(tǒng)的重命名或者移動文件的命令,對系統(tǒng)進(jìn)行重命名,如$filenameshortdoc。這就可以實(shí)現(xiàn)更改擴(kuò)展名的需求。不過筆者并不建議采用這個(gè)expr命令來完成這個(gè)需求。因?yàn)楫?dāng)文件名的長度不固定時(shí),這個(gè)正則表達(dá)式比價(jià)難寫。要將文件名字符串截取出來(去掉擴(kuò)展名的名字),有一定的難度。

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

從這個(gè)案例中,筆者也想再次強(qiáng)調(diào)一下一個(gè)字符串處理的基本原則。即無論是截取字符串還是對字符串進(jìn)行的其他操作,如果可以通過系統(tǒng)命令+可選項(xiàng)參數(shù)來實(shí)現(xiàn)的,就采用這種實(shí)現(xiàn)方式。如果沒有的話,需要考慮能否采用basename等不需要正則表達(dá)式的命令來實(shí)現(xiàn)。只有在以上兩種方式都不可行的情況下,才考慮使用exper命令來實(shí)現(xiàn)。這主要是因?yàn)檎齽t表達(dá)式的設(shè)計(jì)實(shí)在比較麻煩,雖然其功能比較強(qiáng)大。利用exper來統(tǒng)計(jì)一下字符串的長度還好,但是如果要實(shí)現(xiàn)一些復(fù)雜功能,如截取字符串或者確定字符的位置,就需要系統(tǒng)工程師有比較深厚的功底了。

標(biāo)簽: Unix系統(tǒng)
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品88久久久久久| 久久最新视频| 高清久久一区| 日韩中文欧美在线| 成人亚洲一区| 欧美亚洲tv| 香蕉视频成人在线观看| 精品精品国产三级a∨在线| 亚洲最新av| 久久精品亚洲人成影院 | 999久久久91| 久久亚洲精精品中文字幕| 亚洲一区二区三区高清| 日韩欧美午夜| 欧美激情国产在线| 粉嫩av一区二区三区四区五区 | 国产日韩欧美在线播放不卡| 老牛影视精品| 国产一区福利| 国产一区二区三区网| 久久a爱视频| 久久亚洲黄色| 国产夫妻在线| 日韩欧美看国产| 久久精品动漫| 欧美特黄一级| 日韩中文字幕区一区有砖一区 | 黄色亚洲在线| 伊人成人在线视频| 亚洲一区二区三区免费在线观看| 国产真实久久| 亚洲欧美日韩国产| 亚欧成人精品| 麻豆91精品91久久久的内涵| 国产一区丝袜| 欧美1区免费| 亚洲+小说+欧美+激情+另类| 国产日韩一区二区三免费高清| 国产日韩欧美中文在线| 国产精品久久| 久久人人88| 97久久亚洲| 韩国精品主播一区二区在线观看| 在线成人动漫av| 日韩专区视频网站| 你懂的国产精品| 2023国产精品久久久精品双| 久久夜色精品| 精品国产日韩欧美精品国产欧美日韩一区二区三区| 国产精品亚洲综合色区韩国| 国产91欧美| 三级欧美韩日大片在线看| 精品九九久久| 在线人成日本视频| 欧洲在线一区| 中文久久精品| 欧美精品三级在线| 久久国产亚洲| 国产调教精品| 蜜臀av一区二区在线免费观看| 国产精品chinese| 免费视频最近日韩| 色在线中文字幕| 国产欧美日韩精品一区二区免费 | 精品中文字幕一区二区三区四区| 欧美日韩精品一本二本三本 | 鲁鲁在线中文| 日韩影片在线观看| 国产福利一区二区精品秒拍 | 色综合五月天| 国产日韩一区二区三区在线| 久久高清免费观看| 99精品在线| www.com.cn成人| 国产成人久久精品麻豆二区| 国产精品天堂蜜av在线播放| 日韩伦理福利| 精品三级av| 麻豆国产精品| 久久精品国内一区二区三区| 青青青国产精品| 亚洲精品三级| 亚洲va久久| 国产日韩三级| 国产第一亚洲| 亚洲v在线看| 久久激情网站| 免费看的黄色欧美网站 | 国产精品第一| 青青青免费在线视频| 精品久久美女| 国产精品分类| 日本不良网站在线观看| 国产精品99免费看| 亚洲免费福利一区| 国产日韩欧美中文在线| 国产一区二区视频在线看| 中文在线а√天堂| 亚洲欧美日韩高清在线| 亚洲18在线| 日韩成人综合| 午夜久久av | 日韩视频久久| 国产香蕉精品| 999国产精品| 日本麻豆一区二区三区视频| 国产一区二区三区日韩精品| 女主播福利一区| 免费精品一区| 中文日韩在线| 国产福利91精品一区二区| 欧美 日韩 国产一区二区在线视频| 亚洲欧美久久久| 97精品97| 日韩国产精品久久久| 牛牛精品成人免费视频| 婷婷激情图片久久| 福利一区在线| 日本中文字幕一区二区视频| 日韩一区二区三区免费播放| 日韩精品一区二区三区中文在线| 午夜精品成人av| 国产日本久久| 日本在线一区二区三区| 伊人久久大香线蕉av超碰演员| 免费亚洲婷婷| 亚洲人成精品久久久| 欧美a级一区| 国产99精品一区| 美女网站视频一区| 国产调教精品| 免费高清在线一区| 视频一区中文| 高清不卡亚洲| 视频在线不卡免费观看| 精品国产欧美日韩| 97精品视频在线看| 精品国产乱码久久久久久1区2匹| 日韩精品1区2区3区| 日本欧美一区二区| 欧美日本精品| 国产精品www.| 激情黄产视频在线免费观看| 亚洲www免费| 久久国产88| 久久国产成人| 日本午夜精品久久久| 九九99久久精品在免费线bt| 国产成人免费| 国产专区一区| 日韩激情精品| 色婷婷色综合| 午夜国产精品视频| 蜜桃一区二区三区在线观看| 亚洲精品动态| 国产精品红桃| 午夜欧美巨大性欧美巨大| 欧洲激情综合| 日韩一区二区三区免费视频| 国产欧美久久一区二区三区| 国产精品亚洲产品| 亚洲一区资源| 亚洲三级网址| 成人精品高清在线视频| 久久午夜精品| 国产专区精品| 亚洲一区导航| 精品国产第一福利网站| 久久国产精品亚洲77777| 久久国产精品免费精品3p| 欧美精品黄色| 国产成人黄色| 国产日韩欧美| 蜜臀精品久久久久久蜜臀| 亚洲午夜天堂| 日韩不卡手机在线v区| 日韩国产一区二区三区| 亚洲欧美日本国产| 欧美日韩第一| 亚洲免费福利| 麻豆91精品91久久久的内涵| 蜜桃伊人久久| 一区久久精品| 久久青草久久| 欧美xxxx中国| 激情久久一区二区| 日韩精品久久久久久| 在线一区视频| 亚洲二区三区不卡| 国产高清亚洲| 国产日韩欧美一区二区三区 | 国产美女一区| 久久精品亚洲人成影院| 亚洲天堂一区二区| 欧产日产国产精品视频| 国际精品欧美精品| 成人午夜在线| 日韩大片在线观看| 久久在线免费| 在线视频亚洲欧美中文|