shell字符串处理

一: 求字符串长度

格式如下:

1. ${#string}

2. expr length $string


二: 字符串索引

格式如下

expr index $string $substring

注:expr索引命令的功能是在字符串$string上匹配$substring中字符第一次出现的位置,若在$string上匹配不到$substring中的任何字符,expr index返回0


三: expr match

在开头匹配字符串,格式如下

expr match $string $substring

注:expr match命令在string的开头匹配substring字符串,返回匹配到的substring字符串的长度,若string的开头匹配不到substring,则返回0,,substring既可以是字符串也可以是正则表达式


四:  抽取子串

bash shell 提供两种命令${...}和expr实现抽取子串功能,${..}有两种格式,格式如下

1. ${string:position}

2 .${string:position:length}

注:第1种格式命令从名称为$string的字符串的第$position个位置开始抽取子串,第2种格式命令在第1种格式命令的基础上添加了$length变量,表示从名称为$string的字符串的第$position个位置开始抽取长度为$length的子串,需要注意的是,${...}格式的命令是从0开始对名称为$string的字符串进行标号


${string:position}和${string:position:length}都是从string的左边开始技术抽取子串,${...}命令还提供了从string的右边开始计数抽取子串的功能,有以下两种格式

1. ${string: -length}                           //冒号和横杆符号之间有一个空格

2. ${string:(length)}                          //冒号和左括号之间未必要有空格,length要以-号开头

注: 从$string的右边抽取长度为$length的的子串


expr 抽取子串命令格式如下

expr substr $string $position $length

注: expr substr命令与${...}命令最大的不同之处在于expr substr命令是从1开始对名称为$string的字符串进行编号的,另外,expr substr命令中的$length是必不可少的,如果缺少$length参数,将报expr语法错误


接下来我们介绍使用正则表达式抽取子串命令,是用正则表达式只能抽取string开头处或结尾处的子串,抽取string开头处子串的命令格式有以下两种格式



利用正则表达式,抽取string结尾处子串的命令同样有以下两种格式



五: 删除子串 

与抽取子串相反,删除子串是指将原字符串中符合条件的子串删除,删除子串命令只有${...}格式的,但是,删除子串命令可以分为从开头处删除和从结尾处删除两种不同的命令。首先,我们介绍从开头处删除子串的命令,有以下两种格式

1. ${string#substring}                            //删除string开头处与substring匹配的最短子串

2. ${string##substring}                          //删除string开头处与substring匹配的最长子串


从结尾处删除子串,格式如下:

1. ${string%substring}                            //删除string结尾处与substring匹配的最短子串

2. ${string%%substring}                        //删除string结尾处与substring匹配的最长子串


注: substring不是正则表达式,但是可以在substring中使用*字符,其中*字符有特殊的意义,表示起始字符和终止字符之间的任意字符


六: 替换子串

替换子串都是${...}格式的,可以在任意处(也包括开头处和结尾处)替换满足条件的子串,首先介绍在任意处替换子串的命令,有以下两种格式

1. ${string/substring/replacement}        //仅替换第一次与substring相匹配的子串

2. ${string//substring/replacement}       //替换所有与substring相匹配的子串


替换子串命令还有两种格式,分别为在string开头处和结尾处替换与substring相匹配的子串,格式为

1. ${string/#substring/replacement}       //替换string开头处与substring相匹配的子串

2. ${string/%substring/replacement}     //替换string结尾处 与substring相匹配的子串


注: substring不是正则表达式,但是可以在substring中使用*字符,其中*字符有特殊的意义,表示起始字符和终止字符之间的任意字符


本文摘录自:Linux Shell编程 从初学到精通 第9章第2节内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值