一、字符串相关操作
1. 计算字符串的长度
语法 | 说明 | |
---|---|---|
方法一 | ${#string} | 无 |
方法二 | expr length “$string” | string有空格,则必须加双引号 |
举例:
# 计算字符串的长度
var1="Hello shell"
len=${#var1}
# 当定义的字符串有空格的时候,$string必须有双引号,否则会报错
len=`expr length "$var1"`
2. 字符串其他操作
操作 | 语法 |
---|---|
获取字符索引的位置 | expr index $string $substring |
计算子串长度 | expr match $string substr |
举例:
# 获取字符索引的位置 如果是一个字符串,会把字符串全部分割成字符,然后同时去匹配定义的字符串
# 只要有一个匹配到了就返回对应的坐标
var1="my name is zhangsan"
# 会将name拆成 n a m e 分别取匹配my name is zhangsan
# n先匹配 my name is zhangsan中的m 未匹配
# a去匹配my name is zhangsan中的m 未匹配
# m去匹配my name is zhangsan中的m 匹配 返回1
idx=`expr index "$var1" name`
# 如果是字符,正常返回坐标,下面就是4
idx=`expr index "$var1" n`
var1="my name is zhangsan"
# 匹配需要从头还是匹配,从中间任何一个位置匹配返回都是0,也就是未匹配到
# 如果匹配的字符中间有空格,需要加上双引号
sub_len=`expr match "$var1" "my name"`
3. 抽取子串
语法 | 说明 | |
---|---|---|
方法一 | ${string:position} | 从string中的position开始 |
方法二 | ${stirng:position:length} | 从position开始,匹配长度为length |
方法三 | ${string: -position} | 从右边开始匹配 注意冒号和负号中间有空格 |
方法四 | ${string:(position)} | 从右边开始匹配 |
方法五 | expr substr $string $position $length | 从position开始,匹配长度为length |
举例:
var1="kafka hadop yarn mapreduce"
# expr的下标中1开始,这种下标从0开始 提取的字符应该是p yarn mapreduce
substr_1=${var1:10}
substr_2=${var1:10:5}
substr_3=${var1: -4}
substr_4=${var1:(-4)}
substr_4=${var1:-4:2}
# 从1开始计数,返回的字符串 op ya
substr_5=`expr substr "$var1" 10 5`