天天看點

變量擴充:取字元串切片

2013年3月22日 星期五 晴

變量擴充:取字元串切片

一、定義變量

[root@desktop7 ~]# name=simth_jacob

[root@desktop7 ~]#

[root@desktop7 ~]# name2=(cheng long)

二、取值

1、數組取值(檢視數組成員)

[root@desktop7 ~]# echo ${name2[1]}

long

[root@desktop7 ~]# echo ${name2[0]}

cheng

2、變量切片取值

(1)截取變量值第三個字元到最後

[root@desktop7 ~]# echo ${name:2}

mth_jacob

(2)截取變量值第六個字元到最後

[root@desktop7 ~]# echo ${name:5}

_jacob

(3)截取變量值從第三個到第五個字元

[root@desktop7 ~]# echo ${name:2:4}

mth_

三、變量擴充

檢視變量

[root@desktop7 ~]# echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin:/root/bin

1、删除第一個 ${variable#key}

[root@desktop7 ~]# echo ${path#*:}

/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin:/root/bin

2、删除條件冒号(:)前所有 ${variable##key}

[root@desktop7 ~]# echo ${path##*:}

/root/bin

3、删除最後一個 ${variable%key}

[root@desktop7 ~]# echo ${path%:*}

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin

4、删除條件冒号(:)後所有 ${variable%%key}

[root@desktop7 ~]# echo ${path%%:*}

/usr/kerberos/sbin

5、舊内容換為新内容,替換首個 ${variable/old/}

[root@desktop7 ~]# echo ${path/sbin/qq}

/usr/kerberos/qq:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin:/root/bin

6、舊内容換為新内容,替換首個 ${variable//old/}

[root@desktop7 ~]# echo ${path//usr/qq}

/qq/kerberos/sbin:/qq/kerberos/bin:/qq/local/sbin:/qq/local/bin:/sbin:/bin:/qq/sbin:/qq/bin:/qq/x11r6/bin:/root/bin

7、小練習

[root@desktop7 ~]# echo 999|sed 's9\9\9\99669'

66

[root@desktop7 ~]# echo 999|sed 's9\9\9\99\9\9\9\9\9\99'

999999

[root@desktop7 ~]# echo 999|sed 's#999#999999#'

替換字元可随意,可用轉義字元轉義原含義,如數字、字母等

[root@desktop7 ~]# echo 999|sed 'sa999a999999a'

[root@desktop7 ~]# echo 999|sed 'ss999s999999s'

[root@desktop7 ~]# echo 999|sed 'ss99s88899s'

888999

[root@desktop7 ~]# echo 999|sed 'ss9s88899s'

8889999

[root@desktop7 ~]# echo 989|sed 'ss9s88899s'  #預設替換首個

8889989

[root@desktop7 ~]# echo 999|sed 's;99;88899;'