shell-02-字符串处理

文章目录

          • 一、字符串相关操作
            • 1. 计算字符串的长度
            • 2. 字符串其他操作
            • 3. 抽取子串

一、字符串相关操作
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`

你可能感兴趣的:(shell)