shell特殊变量演示(四)shell变量子串

shell变量子串

 

通过man bash 搜索parameter expansion

先定义一个变量名为DAIDAI,注意变量名是大写,如图所示:

我这样直接echo变量名是直接调用赋值

①显示变量值中的字符串的长度:

[root@6 scripts]# echo ${#DAIDAI}

变量中自带的计算长度的防范效率最高,在要求效率的场景下多使用!

②变量子串截取

打印指定开始位置的字符串长度,I am daidai这里我从第三个字符开始打印(包含空格且不算第三个字符)

[root@6 scripts]# echo ${DAIDAI:3}

也可以制定从哪个字段开始取,取多少字段,

[root@6 scripts]# DAIDAI="I am daidai"

[root@6 scripts]# echo ${DAIDAI:2:2}

 

③从变量DAIDAI从开头删除最短匹配的子串

这里我从开头删除了I am 

[root@6 scripts]# echo ${DAIDAI#I am}

输出显示就这是剩下了daidai了。

#表示从开头删除匹配最短。

④从变量DAIDAI从开头删除最长匹配的子串

[root@6 scripts]# DAIDAI="abcABC123abc"

[root@6 scripts]# echo $DAIDAI

abcABC123abc

[root@6 scripts]# echo ${DAIDAI##a*c}

从开头删除最长匹配a*c的子串,如图所示:结果为空了,说明都是匹配上了,全部删除。

a*c表示匹配的字符串,*表示匹配所有,a*c匹配开头为a,中间为任意多个字符,结尾为c的字符串。

[root@6 scripts]# DAIDAI="abcABC123abc"

[root@6 scripts]# echo $DAIDAI         

abcABC123abc

[root@6 scripts]# echo ${DAIDAI##a*C}  

123abc

如图所示:从开头删除的最长匹配字符a*C ,结果很明显,如图所示:

##表示从开头删除匹配最长。

a*C表示匹配的字符串,*表示匹配所有,a*C匹配开头为a,中间为任意多个字符,结尾为C的字符串。


⑤从变量DAIDAI结尾开始删除最短匹配的子串。

[root@6 scripts]# echo ${DAIDAI%daidai}

如图所示:开头保留了,只删除结尾。

%表示从结尾删除匹配最短。

⑥从变量DAIDAI结尾开始删除最长匹配的子串

[root@6 scripts]# DAIDAI="I am daidai"

[root@6 scripts]# echo ${DAIDAI%%i*i} 

I am da

如图所示:从结尾删除了最长匹配的子串

%%表示从结尾删除匹配最长。

⑦使用/代替第一个指定匹配的字符并替换。(用的比较多)

[root@6 scripts]# DAIDAI="I am daidai"

[root@6 scripts]# echo $DAIDAI

I am daidai

[root@6 scripts]# echo ${DAIDAI/daidai/aimi}

I am aimi

 

⑧使用//代替所有匹配的指定字符串

[root@6 scripts]# DAIDAI="I am daidai,yes daidai"

[root@6 scripts]# echo $DAIDAI

I am daidai,yes daidai

[root@6 scripts]# echo ${DAIDAI//daidai/niuniu}

I am niuniu,yes niuniu

如图所示:替换了所有匹配daidai的字符串。

 

 

有关上述匹配删除总结:

#表示从开头删除匹配最短。

##表示从开头删除匹配最长。

%表示从结尾删除匹配最短。

%%表示从结尾删除匹配最长。

a*c表示匹配的字符串,*表示匹配所有,a*c匹配开头为a,中间为任意多个字符,结尾为c的字符串。

a*C表示匹配的字符串,*表示匹配所有,a*C匹配开头为a,中间为任意多个字符,结尾为C的字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海天哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值