电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Unix操作系統中處理字符串問題的簡單方式

瀏覽:7日期:2024-06-08 14:30:54

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

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

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

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

二、截取字符串。

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

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

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

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

三、修改文件的擴展名。

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

如果要實現批量更改文件擴展名的話,則可以借助for等循環語句來實現。不過循環語句內部的操作有兩種實現方式。一是采用expr命令。其實對文件名進行操作,說到底就是對字符串的操作。因為文件名字也是一種字符串。如系統工程師可以先利用expr命令截取字符串的功能,將擴展名前面的字符串截取出來,然后將其保存在一個變量中,如filenameshort。然后再利用系統的重命名或者移動文件的命令,對系統進行重命名,如$filenameshortdoc。這就可以實現更改擴展名的需求。不過筆者并不建議采用這個expr命令來完成這個需求。因為當文件名的長度不固定時,這個正則表達式比價難寫。要將文件名字符串截取出來(去掉擴展名的名字),有一定的難度。

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

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

標簽: Unix系統
主站蜘蛛池模板: 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 泰安办公家具-泰安派格办公用品有限公司 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 手板_手板模型制作_cnc手板加工厂-东莞天泓| 食品级焦亚硫酸钠_工业级焦亚硫酸钠_焦亚硫酸钠-潍坊邦华化工有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 慈溪麦田广告公司,提供慈溪广告设计。| 冷镦机-多工位冷镦机-高速冷镦机厂家-温州金诺机械设备制造有限公司 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 江苏农村商业银行招聘网_2024江苏农商行考试指南_江苏农商行校园招聘 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 打造全球沸石生态圈 - 国投盛世| 礼堂椅厂家|佛山市艺典家具有限公司| 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 |