Bash中的字符串处理

Bash中的字符串处理


字符串切片

//示例
[root@node1 ~]# DOMAIN=www.baidu.com
[root@node1 ~]# echo $DOMAIN
www.baidu.com
  • ${var#*bai},自左而右,查找var变量中存储的字符串中第一次出现的由bai所指明的字符,删除此字符及其左侧的所有内容
[root@node1 ~]# echo ${DOMAIN#*bai}
du.com
  • ${var##*ba},自左而右,查找var变量中存储的字符串中最后一次出现的由ba所指明的字符,删除此字符及其左侧的所有内容
[root@node1 ~]# echo ${DOMAIN##*ba}
idu.com
  • ${var%du*},自右而左,查找var变量中存储的字符串中第一次出现的由du所指明的字符,删除此字符及其右侧的所有内容
[root@node1 ~]# echo ${DOMAIN%du*}
www.bai
  • ${var%%b*},自右而左,查找var变量中存储的字符串中最后一次出现的由b所指明的字符,删除此字符及其右侧的所有内容
[root@node1 ~]# echo ${DOMAIN%%b*}
www.

字符串切片

  • 偏移4个字符显示
[root@node1 ~]# echo ${DOMAIN:4}
baidu.com
  • 偏移4个字符,取5个字符
[root@node1 ~]# echo ${DOMAIN:4:5}
baidu
  • 取出字符串的最后几个字符,${var: -length},自右向左取
[root@node1 ~]# echo ${DOMAIN: -3}
com

注意:冒号后必须有一空白字符


查找替换

  • 查找var所表示的字符串中,第一次被baidu所匹配到字符串,以cwt替换
[root@node1 ~]# echo ${DOMAIN/baidu/cwt}
www.cwt.com
  • ${var//w/W},查找var变量存储的字符中所有能够由w匹配到的内容,并替换为W
[root@node1 ~]# echo ${DOMAIN//w/W}
WWW.baidu.com
  • ${var/#w/c},行首被w所匹配到字符串,以c替换之,只会匹配一次
[root@node1 ~]# echo ${DOMAIN/#w/c}
cww.baidu.com
  • ${var/%c/C},查找var变量存储的字符中行尾能够由c匹配到的内容,并替换为C,只会匹配一次
[root@node1 ~]# unset DOMAIN
[root@node1 ~]# DOMIAN=www.baidu.ccc
[root@node1 ~]# echo $DOMIAN
www.baidu.ccc
[root@node1 ~]# echo ${DOMIAN/%c/C}
www.baidu.ccC

查找删除

${var/baidu}        //查找var所表示的字符串中,第一次被baidu所匹配到字符串,删除
${var//w}          //查找var所表示的字符串中,所有被w所匹配到字符串,删除
${var/#c}          //查找var所表示的字符串中,行首被c所匹配到字符串,删除
${var/%c}          //查找var所表示的字符串中,行尾被c所匹配到字符串,删除
    
注:删除比较简单,这里不作示例

字符大小写转换

  • ${var^^},把var变量中的所有小写字母,全部替换为大写字母
[root@node1 ~]# echo ${DOMAIN^^}
WWW.BAIDU.COM
  • ${var,,},把var变量中的所有大写字母,全部替换为小写字母
[root@node1 ~]# echo $DOMAIN
WWW.BAIDU.COM
[root@node1 ~]# echo ${DOMAIN,,}
www.baidu.com

变量赋值

  • ${var:-word},如果变量var为空或未声明,则返回word所表示的字符串;否则,则返回var变量的值
[root@node1 ~]# echo $FILE				//未赋值
[root@node1 ~]# echo ${FILE:-无效的变量}
无效的变量
[root@node1 ~]# echo $FILE				//原变量不受影响


[root@node1 ~]# FILE=root			    //赋值
[root@node1 ~]# echo $FILE
root
[root@node1 ~]# echo ${FILE:-cwt}
root
  • ${var:+word},如果变量var为空或未声明,忽略;否则,则返回word
[root@node1 ~]# unset FILE
[root@node1 ~]# echo ${FILE:+cwt}
[root@node1 ~]# FILE=tom
[root@node1 ~]# echo ${FILE:+cwt}
cwt
  • ${var:=word},如果变量var为空或未声明,则返回word所表示的字符串,并且把word赋值为var变量,否则,则返回var变量的值
[root@node1 ~]# unset FILE					
[root@node1 ~]# echo $FILE				//未赋值

[root@node1 ~]# echo ${FILE:=cwt}		
cwt
[root@node1 ~]# echo $FILE
cwt
  • ${var:?error},如果变量var为空或未声明,则返回error为错误信息,否则,则返回var变量的值
[root@node1 ~]# echo ${FILE:?error}
-bash: FILE: error
[root@node1 ~]# FILE=cwt
[root@node1 ~]# echo ${FILE:?error}
cwt

变量的间接引用

  • 如果第一个变量的值恰好是第二个变量的变量名,从第一个变量引用第二个变量的值得方法,就称为变量的间接引用,也称为间接变量引用
[root@node1 ~]# A=TOM
[root@node1 ~]# TOM=B
[root@node1 ~]# eval C=\$$A
[root@node1 ~]# echo $C
B

获取字符串的长度

[root@node1 ~]# A=Hello
[root@node1 ~]# echo ${#A}
5
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值