大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運(yùn)維,大數(shù)據(jù),SEO, 網(wǎng)站開(kāi)發(fā)、運(yùn)維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評(píng)論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          shell字符串操作方法,以及實(shí)例

          每一種語(yǔ)言都有他獨(dú)自的字符串操作方法,shell也一樣,下面以以例子的方式,簡(jiǎn)單介紹常用方法。

          1,取得字符串長(zhǎng)度

          string=abc12342341          //等號(hào)二邊不要有空格
          echo ${#string}             //結(jié)果11
          expr length $string         //結(jié)果11
          expr "$string" : ".*"       //結(jié)果11 分號(hào)二邊要有空格,這里的:根match的用法差不多

          2,字符串所在位置

          expr index $string '123'    //結(jié)果4 字符串對(duì)應(yīng)的下標(biāo)是從0開(kāi)始的

          這個(gè)方法讓我想起來(lái)了js的indexOf,各種語(yǔ)言對(duì)字符串的操作方法大方向都差不多,如果有語(yǔ)言基礎(chǔ)的話,學(xué)習(xí)shell會(huì)很快的。

          3,從字符串開(kāi)頭到子串的最大長(zhǎng)度

          expr match $string 'abc.*3' //結(jié)果9

          個(gè)人覺(jué)得這個(gè)函數(shù)的用處不大,為什么要從開(kāi)頭開(kāi)始呢。

          4,字符串截取

          echo ${string:4}      //2342341  從第4位開(kāi)始截取后面所有字符串
          echo ${string:3:3}    //123      從第3位開(kāi)始截取后面3位
          echo ${string:3:6}    //123423   從第3位開(kāi)始截取后面6位
          echo ${string: -4}    //2341  :右邊有空格   截取后4位
          echo ${string:(-4)}   //2341  同上
          expr substr $string 3 3   //123  從第3位開(kāi)始截取后面3位

          上面的方法讓我想起了,php的substr函數(shù),后面截取的規(guī)則是一樣的。

          5,匹配顯示內(nèi)容

          //例3中也有match和這里的match不同,上面顯示的是匹配字符的長(zhǎng)度,而下面的是匹配的內(nèi)容
          expr match $string '\([a-c]*[0-9]*\)'  //abc12342341
          expr $string : '\([a-c]*[0-9]\)'       //abc1
          expr $string : '.*\([0-9][0-9][0-9]\)' //341 顯示括號(hào)中匹配的內(nèi)容

          這里括號(hào)的用法,是不是根其他的括號(hào)用法有相似之處呢,

          6,截取不匹配的內(nèi)容

          echo ${string#a*3}     //42341  從$string左邊開(kāi)始,去掉最短匹配子串
          echo ${string#c*3}     //abc12342341  這樣什么也沒(méi)有匹配到
          echo ${string#*c1*3}   //42341  從$string左邊開(kāi)始,去掉最短匹配子串
          echo ${string##a*3}    //41     從$string左邊開(kāi)始,去掉最長(zhǎng)匹配子串
          echo ${string%3*1}     //abc12342  從$string右邊開(kāi)始,去掉最短匹配子串
          echo ${string%%3*1}    //abc12     從$string右邊開(kāi)始,去掉最長(zhǎng)匹配子串

          這里要注意,必須從字符串的第一個(gè)字符開(kāi)始,或者從最后一個(gè)開(kāi)始,

          7,匹配并且替換

          echo ${string/23/bb}   //abc1bb42341  替換一次
          echo ${string//23/bb}  //abc1bb4bb41  雙斜杠替換所有匹配
          echo ${string/#abc/bb} //bb12342341   #以什么開(kāi)頭來(lái)匹配,根php中的^有點(diǎn)像
          echo ${string/%41/bb}  //abc123423bb  %以什么結(jié)尾來(lái)匹配,根php中的$有點(diǎn)像

          posted on 2012-09-17 08:19 草原上的駱駝 閱讀(1111) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Linux

          主站蜘蛛池模板: 抚宁县| 长宁县| 游戏| 桐城市| 横峰县| 南京市| 基隆市| 汉寿县| 定日县| 津南区| 平陆县| 门头沟区| 绿春县| 海伦市| 扬中市| 罗田县| 铜梁县| 乡城县| 昌邑市| 舞阳县| 开平市| 宁陵县| 大新县| 内黄县| 洪洞县| 南郑县| 新龙县| 台州市| 张掖市| 璧山县| 酉阳| 灵台县| 桦川县| 日喀则市| 鄂托克旗| 临漳县| 诏安县| 蕉岭县| 凌云县| 游戏| 乳源|