shell tr 替换 空格_Linux -Shell 之变量

9cacf08217e4a8180e8c437eda56ca85.png

变量替换

60cc893066b4c7d1cf72848c0e677336.png

举个例子

从前匹配删除

var1="I like shell I like linux"

83513f7473b3980cb2285bc710530788.png

然后使用替换一个字符的模式

var2=${var1#*shell}

表示将包括“shell”以前的字符串匹配删除:

6b6b959c9059ab6a40415286e76517e9.png

可以看到将shell以前的字符串都删除了。

再试一试匹配多个删除,这里使用like

var3=${var1##*ke}

019d9a3c3ebbd60a762015c9cd6548ee.png

可以看到,包括ke前的两处字符前都被删除了。

从后匹配删除

还是采用var1演示:

var1="I like shell I like linux"

使用非贪婪模式

var2=${var1%like*}

859efa855023b2c99a80ad5cc516b588.png

此时将后面的从后向前的第一个like后的数据删除了。

如果使用贪婪模式的话:

var3=${var1%%like*}

8eb6250d1b32ccc86dbc7f358c00597e.png

贪婪模式后只会剩下一个I

字符串替换

同样使用var1,现在将like换为love

var2=${var1/like/love}

286a7b3d7aea8a3c21da9708fc271154.png

这只是单个替换,多个替换为:

var2=${var1//like/love}

534f2083f500713374294a7e3576f9b9.png

字符串处理

获取字符串长度:

  • ${#string}
  • expr length "$string" 注意,如果string有空格,必须使用双引号。

d2b4fa60baf246a7582eb2871d14dade.png

76a84952de1f787ab841e0f542ead447.png

可以发现第一种的使用更加方便,而且没有空格的限制

获取子串在字符串的位置

  • expr index $string $substring

29a32fdd19a591ea67b84d47363df600.png

其中的str为 hello shell ,可以发现,下标是从1开始的。

注意:查找的substr是讲substr拆分为一个一个的字符,匹配的第一个字符为准

比如计算子串的长度

str="hello shell"
substr="shell"
expr index "$str" "$substr"

结果为1

8beba4993c05696678b8ab77c859e4e2.png

原因是shell会被拆为 s h e l l 这几个字符,而其中的h在str中的位置为1

获取子串的长度

expr match $string $substring

注意:匹配的时候,只会匹配到从头开始的内容,从中间匹配的会返回默认值0

2e8709ba6410dd88d4e992dd7c7aeadf.png

如果是从中间匹配的,则会返回0

36b5c5da8d68f8791f55f9dd19394321.png

抽取子串

抽取子串

语法说明${string:position}从string的position开始${string:position:length}从position开始,长度为length${string: -position}从position左边开始${string:(position)}从position右边开始expr substr $string $position $length从position开始,长度为length

  • 从position开始

f8e34a6728232bf2c13d782884e02217.png
  • position后面的length长度

df5e70e1bcd76eaac183c1db604f6d1f.png
  • position的左边
    echo ${var: -5}

1e74244aba1776593be461fda98ddb34.png
  • position的右边(同上)

3861be80bf72fda681defc88ceaabb53.png

注意:使用expr,索引计数是从1开始的,使用${string :position}是从0开始的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值