隨筆-314  評論-209  文章-0  trackbacks-0

          shell字符串的截取的問題:
          一、Linux shell 截取字符變量的前8位,有方法如下:
          1.expr substr “$a” 1 8
          2.echo $a|awk ‘{print substr(,1,8)}’
          3.echo $a|cut -c1-8
          4.echo $
          5.expr $a : ‘\(.\\).*’
          6.echo $a|dd bs=1 count=8 2>/dev/null

          二、按指定的字符串截取
          1、第一種方法:
          ${varible##*string} 從左向右截取最后一個string后的字符串
          ${varible#*string}從左向右截取第一個string后的字符串
          ${varible%%string*}從右向左截取最后一個string后的字符串
          ${varible%string*}從右向左截取第一個string后的字符串
          “*”只是一個通配符可以不要

          例子:
          $ MYVAR=foodforthought.jpg
          $ echo ${MYVAR##*fo}
          rthought.jpg
          $ echo ${MYVAR#*fo}
          odforthought.jpg

          2、第二種方法:${varible:n1:n2}:截取變量varible從n1到n2之間的字符串。

          可以根據特定字符偏移和長度,使用另一種形式的變量擴展,來選擇特定子字符串。試著在 bash 中輸入以下行:
          $ EXCLAIM=cowabunga
          $ echo ${EXCLAIM:0:3}
          cow
          $ echo ${EXCLAIM:3:7}
          abunga

          這種形式的字符串截斷非常簡便,只需用冒號分開來指定起始字符和子字符串長度。

          三、按照指定要求分割:
          比如獲取后綴名
          ls -al | cut -d “.” -f2

          應用心得:

          $MYVAR="12|dadg"
          echo ${MYVAR##*|}   #打印分隔符后的字符串
          dafa
          echo ${MYVAR%%|*} #打印分隔符前的字符串
          12

          posted on 2011-03-04 15:09 xzc 閱讀(3604) 評論(1)  編輯  收藏 所屬分類: linux/unix

          評論:
          # re: shell字符串的截取 2011-03-04 15:12 | xzc

          #是否包含@INFILE@字符串的判斷
          if echo "$ctl_file"|grep -q "@INFILE@"
          then
          #分隔符前字符串
          echo "${ctl_file%%@INFILE@*}" >${table_name}.ctl
          #文件名
          echo "${infile}" >>${table_name}.ctl
          #分隔符后字符串
          echo "${ctl_file##*@INFILE@}" >>${table_name}.ctl
          else
          echo "${ctl_file}" >${table_name}.ctl
          fi
            回復  更多評論
            
          主站蜘蛛池模板: 扶沟县| 德阳市| 建宁县| 阿图什市| 班玛县| 皋兰县| 汉寿县| 安西县| 盐山县| 宁南县| 博野县| 丽水市| 青川县| 江津市| 随州市| 江油市| 若羌县| 岳普湖县| 巢湖市| 靖宇县| 台州市| 邢台市| 兰坪| 苗栗县| 长垣县| 德安县| 图片| 拜城县| 竹溪县| 芷江| 昌邑市| 保定市| 怀远县| 米泉市| 广昌县| 禹州市| 迭部县| 屯留县| 旌德县| 宁化县| 长兴县|