<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評(píng)論-209  文章-0  trackbacks-0
    一、構(gòu)造字符串
    直接構(gòu)造
    STR_ZERO=hello
    STR_FIRST="i am a string"
    STR_SECOND='success'

    重復(fù)多次
    #repeat the first parm($1) by $2 times
    strRepeat()
    {
    local x=$2
    if [ "$x" == "" ]; then
    x=0
    fi

    local STR_TEMP=""
    while [ $x -ge 1 ];
    do
    STR_TEMP=`printf "%s%s" "$STR_TEMP" "$1"`
    x=`expr $x - 1`
    done
    echo $STR_TEMP
    }

    舉例:
    STR_REPEAT=`strRepeat "$USER_NAME" 3`
    echo "repeat = $STR_REPEAT"

    二、賦值與拷貝
    直接賦值
    與構(gòu)造字符串一樣
    USER_NAME=terry

    從變量賦值
    ALIASE_NAME=$USER_NAME

    三、聯(lián)接
    直接聯(lián)接兩個(gè)字符串
    STR_TEMP=`printf "%s%s" "$STR_ZERO" "$USER_NAME"`
    使用printf可以進(jìn)行更復(fù)雜的聯(lián)接

    四、求長(zhǎng)
    獲取字符串變量的長(zhǎng)度:${#string}

    求字符數(shù)(char)
    COUNT_CHAR=`echo "$STR_FIRST" | wc -m`
    echo $COUNT_CHAR

    求字節(jié)數(shù)(byte)
    COUNT_BYTE=`echo "$STR_FIRST" | wc -c`
    echo $COUNT_BYTE

    求字?jǐn)?shù)(word)
    COUNT_WORD=`echo "$STR_FIRST" | wc -w`
    echo $COUNT_WORD

    五、比較
    相等比較 str1 = str2
    不等比較 str1 != str2

    舉例:
    if [ "$USER_NAME" = "terry" ]; then
    echo "I am terry"
    fi

    小于比較
    #return 0 if the two string is equal, return 1 if $1 < $2, else 2strCompare() { local x=0 if [ "$1" != "$2" ]; then x=2 localTEMP=`printf "%s\n%s" "$1" "$2"` local TEMP2=`(echo "$1"; echo "$2") |sort` if [ "$TEMP" = "$TEMP2" ]; then x=1 fi fi echo $x }

    六、測(cè)試
    判空   -z str
    判非空  -n str

    是否為數(shù)字
    # return 0 if the string is num, otherwise 1
    strIsNum()
    {
    local RET=1
    if [ -n "$1" ]; then
    local STR_TEMP=`echo "$1" | sed 's/[0-9]//g'`
    if [ -z "$STR_TEMP" ]; then
    RET=0
    fi
    fi
    echo $RET
    }

    舉例:
    if [ -n "$USER_NAME" ]; then
    echo "my name is NOT empty"
    fi

    echo `strIsNum "9980"`

    七、分割
    以符號(hào)+為準(zhǔn),將字符分割為左右兩部分
    使用sed
    舉例:
    命令 date --rfc-3339 seconds 的輸出為
    2007-04-14 15:09:47+08:00
    取其+左邊的部分
    date --rfc-3339 seconds | sed 's/+[0-9][0-9]:[0-9][0-9]//g'
    輸出為
    2007-04-14 15:09:47
    取+右邊的部分
    date --rfc-3339 seconds | sed 's/.*+//g'
    輸出為
    08:00

    以空格為分割符的字符串分割
    使用awk
    舉例:
    STR_FRUIT="Banana 0.89 100"
    取第3字段
    echo $STR_FRUIT | awk '{ print $3; }'

    八、子字符串
    字符串1是否為字符串2的子字符串
    # return 0 is $1 is substring of $2, otherwise 1
    strIsSubstring()
    {
    local x=1
    case "$2" in
    *$1*) x=0;;
    esac
    echo $x
    }

    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} 從左向右截取最后一個(gè)string后的字符串
    • ${varible#*string}從左向右截取第一個(gè)string后的字符串
    • ${varible%%string*}從右向左截取最后一個(gè)string后的字符串
    • ${varible%string*}從右向左截取第一個(gè)string后的字符串
    “*”只是一個(gè)通配符可以不要

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

    2、第二種方法:${varible:n1:n2}:截取變量varible從n1開(kāi)始的n2個(gè)字符,組成一個(gè)子字符串。可以根據(jù)特定字符偏移和長(zhǎng)度,使用另一種形式的變量擴(kuò)展,來(lái)選擇特定子字符串。試著在 bash 中輸入以下行:
    $ EXCLAIM=cowabunga
    $ echo ${EXCLAIM:0:3}
    cow
    $ echo ${EXCLAIM:3:7}
    abunga
    這種形式的字符串截?cái)喾浅:?jiǎn)便,只需用冒號(hào)分開(kāi)來(lái)指定起始字符和子字符串長(zhǎng)度。

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

    shell (bash) 比較運(yùn)算符

                                                                                            
    運(yùn)算符 描述 示例
    文件比較運(yùn)算符
    -efilename 如果filename存在,則為真 [ -e /var/log/syslog ]
    -dfilename 如果filename為目錄,則為真 [ -d /tmp/mydir ]
    -ffilename 如果filename為常規(guī)文件,則為真 [ -f /usr/bin/grep ]
    -Lfilename 如果filename為符號(hào)鏈接,則為真 [ -L /usr/bin/grep ]
    -rfilename 如果filename可讀,則為真 [ -r /var/log/syslog ]
    -wfilename 如果filename可寫,則為真 [ -w /var/mytmp.txt ]
    -xfilename 如果filename可執(zhí)行,則為真 [ -L /usr/bin/grep ]
    filename1-ntfilename2 如果filename1filename2新,則為真 [ /tmp/install/etc/services -nt /etc/services ]
    filename1-otfilename2 如果filename1filename2舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
    字符串比較運(yùn)算符[size=-1](請(qǐng)注意引號(hào)的使用,這是防止空格擾亂代碼的好方法)
    -zstring 如果string長(zhǎng)度為零,則為真 [ -z "$myvar" ]
    -nstring 如果string長(zhǎng)度非零,則為真 [ -n "$myvar" ]
    string1=string2 如果string1string2相同,則為真 [ "$myvar" = "one two three" ]
    string1!=string2 如果string1string2不同,則為真 [ "$myvar" != "one two three" ]
    算術(shù)比較運(yùn)算符
    num1-eqnum2 等于 [ 3 -eq $mynum ]
    num1-nenum2 不等于 [ 3 -ne $mynum ]
    num1-ltnum2 小于 [ 3 -lt $mynum ]
    num1-lenum2 小于或等于 [ 3 -le $mynum ]
    num1-gtnum2 大于 [ 3 -gt $mynum ]
    num1-genum2 大于或等于 [ 3 -ge $mynum ]
    posted on 2011-03-04 18:13 xzc 閱讀(9091) 評(píng)論(2)  編輯  收藏 所屬分類: linux/unix

    評(píng)論:
    # re: Shell處理字符串常用方法 2011-04-22 15:57 | xzc
    for fname in /inffile/lan/jh_data_20110412.txt
    do
    badfname=`echo ${fname##*/}|cut -d "." -f1`.bad
    echo ${badfname}
    done
    --結(jié)果為:
    jh_data_20110412.bad  回復(fù)  更多評(píng)論
      
    # re: Shell處理字符串常用方法 2011-05-05 18:37 | xzc
    #去掉字符串中空格
    gvProvince=`echo ${gvProvince} | sed 's/ //g'`  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 中国在线观看免费的www| 久久99国产亚洲精品观看| 亚洲人成77777在线播放网站不卡| 国产精品黄页免费高清在线观看| 日本免费人成黄页在线观看视频| 亚洲国产精品热久久| 国产免费福利体检区久久| 亚洲乱码中文字幕综合234| 亚洲人成电影在线观看青青| 日本免费污片中国特一级| 亚洲精品自产拍在线观看| 东北美女野外bbwbbw免费| 久久精品国产亚洲5555| av电影在线免费看| 亚洲国产精品无码av| 日韩免费人妻AV无码专区蜜桃 | 亚洲免费人成视频观看| 国产h肉在线视频免费观看| 亚洲国产精品无码久久久| 国产卡一卡二卡三免费入口| 亚洲中文无码永久免| 四虎永久在线精品视频免费观看| 亚洲av无码成人影院一区| 免费成人午夜视频| 亚洲免费人成在线视频观看| 久久亚洲精品无码aⅴ大香| 两性刺激生活片免费视频| 亚洲人成色在线观看| 亚洲国产精品狼友中文久久久| av午夜福利一片免费看久久| 久久久久亚洲AV成人无码| 亚洲性线免费观看视频成熟| 色偷偷尼玛图亚洲综合| 亚洲日韩激情无码一区| 最近2018中文字幕免费视频 | 国产大片91精品免费看3| 黄 色一级 成 人网站免费| 久久99亚洲网美利坚合众国| 午夜一区二区免费视频| 三年片免费高清版| 中文字幕精品三区无码亚洲|