天天看点

变量扩展:取字符串切片

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;'