bash中的字符串处理操作

本文介绍了在bash中如何进行字符串处理,包括子串提取、前缀和后缀的最短与最长匹配去除,以及字符串的首个和全部替换。这些操作不依赖正则表达式,而是采用bash的wildcard方式。

本文首发于我的Github博客
本文记录了作者使用bash过程中,为了解决去除前缀后缀的问题而了解到的bash的字符串操作,简单来说

  1. string:position或者string:position:length进行子串提取
  2. string#pattern进行最短匹配前缀去除,string##pattern进行最长匹配前缀去除
  3. string%pattern进行最短匹配后缀去除,string%%pattern进行最长匹配后缀去除
  4. string/pattern/string进行首个pattern替换,string//pattern/string进行全部pattern替换
  5. 以上的pattern指的都是wildcard而不是regular expression

场景

有时在使用bash脚本的时候,希望对字符串做一些基本的操作,比如说去除前缀后缀(去除文件扩展名,统一前缀编号等),事实上,bash原生支持了许多字符串操作

bash 中的字符串操作

下面所有的pattern指的都是bash wildcard而不是regular expression

子串提取

使用string:position提取从position开始的子串

> string="text, dummy, text, dummy"
> echo ${string:3}
t, dummy, text, dummy

使用string:position:length提取从position开始,长度为length的子串

> string="text, dummy, text, dummy"
> echo ${string:3:4}
t, d

前缀去除

使用string#pattern进行最短匹配前缀去除

> string="text, dummy, text, dummy"
> echo ${string#*text}
, dummy, text, dummy

使用string##pattern进行最长匹配前缀去除

> string="text, dummy, text, dummy"
> echo ${string##*text}
, dummy

后缀去除

使用string%pattern进行最短匹配后缀去除

> string="text, dummy, text, dummy"
> echo ${string%dummy*}
text, dummy, text, y

使用string%%pattern进行最长匹配后缀去除

> string="text, dummy, text, dummy"
> echo ${string%%dummy*}
text, 

字符串替换

使用string/pattern/string进行首个pattern的替换

> string="text, dummy, text, dummy"
> echo ${string/text/TEXT}
TEXT, dummy, text, dummy

使用string//pattern/string进行全部pattern的替换

> string="text, dummy, text, dummy"
> echo ${string//text/TEXT}
TEXT, dummy, TEXT, dummy

想要得到对正则表达式匹配替换的支持的话,可以使用sed命令

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值