linux shell 字符串获取长度、替换、截取、删除等操作(持续更新)

测试字符串:str=/xxx/file.txt.gz

一、长度、变量:

说明

表达式

例子

结果

获取长度

${#string}

${#str}

16

列出所有以prefix开头的变量

${!prefix*}、${!prefix@}

${!st@}

str

测试 ${!prefix*}、${!prefix@}没什么区别,如果大神知道区别,留言,膜拜!
str111=/xxx/file.txt.gz
str222=/xxx/file.txt.gz

echo ${!str@} #结果:str111 str222
echo ${!str*} #结果:str111 str222

二、截取、删除

说明

表达式

例子

结果

从position(从0开始,负表示倒数,下同)开始截取

${string:position}

${str:1}

xxx/file.txt.gz

position开始截取,取length长

${string:position:length}

${str:1:3}

xxx

从第index(从1开始)开始,取number个

`expr substr $string index number`

`expr substr $str 2 3`

xxx

从左边开始,删最短匹配regex

${string#regex }

${str#*.}

txt.gz

从左边开始,删最长匹配regex

${string##regex }

${str##*.}

gz

从右边开始,删最长匹配regex

${string%%regex }

${str%%.*}

/xxx/file

从右边开始,删最短匹配regex

${string%regex }

${str%.*}

/xxx/file.txt

删除操作很有用:比如取目录、文件名、后缀等

dir=${str%/*} 在绝对路径str取目录

filename=${str##*/}  取文件名

suffix=${str##*.} 取后缀

很方便、很简洁,有木有~~~~

三、匹配

说明

表达式

例子

结果

从头匹配substring

`expr match $string '\(substring\)'`

`expr match $str '\(/xx\)'`

/xx

随便位置匹配substring

`expr match $string '.*\(substring/\)'`

`expr match $str '.*\(xx/\)'`

xx/

从头匹配substring,输出匹配数量

`expr match $string 'substring'`

`expr match $str '/xx'`

3

随便位置匹配substring,输出匹配数量

`expr match $ string '.* 'substring''`

`expr match $str '.*xx/'`

5

四、替换

说明

表达式

例子

结果

在string中,用newsubstr替换oldsubstr一次

${string/oldsubstr/newsubstr}

${str/./-}

/xxx/file-txt.gz

在string中,用newsubstr替换所有oldsubstr

${string//oldsubstr/newsubstr}

${str//./-}

/xxx/file-txt-gz

在string中,以oldsubstr开头部分被newsubstr替换

${string/#oldsubstr/newsubstr}

${str/#\/x/y}

yxx/file.txt.gz

在string中,以oldsubstr结尾部分被newsubstr替换

${string/%oldsubstr/newsubstr}

${str/%gz/tar}

/xxx/file.txt.tar


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值