字符串处理
字符串切片
${#var}:返回字符串变量var的长度
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${#var} 14
${var:offset}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 到 ${#var}-1 之间
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${var:4} #跳过4个字符,取后面所有字符 efghijklmn
${var:offset:number}:返回字符串变量 var 中从第 offset 个字符后(不包括第 offset 个字符)的字符开始,长度为 number 的部分
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${var:4:5} #跳过4个字符后,取5个字符 efghi
${var: -length}:取字符串的最右侧几个字符
注意:冒号后必须有一空白字符
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${var: -5} #从后向前取5个字符 jklmn
${var:offset:-length}:从最左侧跳过 offset 字符,一直向右取到距离最右侧 lengh 个字符之前的内容
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${var:5:-2} #去掉前5个和后2个字符后,取剩下的字符 fghijkl${var: -length:-offset}:先从最右侧向左取到 length 个字符开始,再向右取到距离最右侧 offset 个字符之间的内容
注意:-length 前空格
[root@CentOS7 bin]# echo $var abcdefghijklmn [root@CentOS7 bin]# echo ${var: -5:-2} #取后5个字符,去掉后2个,取剩下的字符 jkl
${var#*word}:自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word字符之间的所有字符
${var##*word}:同上,不同的是,删除的是字符串开头至最后一次由word指定的字符之间的所有内容
[root@CentOS7 bin]# var=abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var#*d} #取从前面的一个d以后的字符 eabcdefghijklmn [root@CentOS7 bin]# echo ${var##*d} #取从前面开始最后一个d以后的字符 efghijklmn${var%word*}:自右而左,查找var变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word字符之间的所有字符
${var%%word*}:同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var%d*} #取从后向前第一个d之前的字符 abcdeabc [root@CentOS7 bin]# echo ${var%%d*} #取从后向前开始最后一个d之前的字符 abc
字符串替换
${var/pattern/substr}:查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/cde/----} #从前向后将第一次被cde匹配的字符替换为---- ab----abcdefghijklmn
${var//pattern/substr}: 查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var//cde/----} #将所有被cde匹配的字符替换为---- ab----ab----fghijklmn
${var/#pattern/substr}:查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/#ab/123456} #将以ab开头的行从前向后替换为123456,没被替换的保留 123456cdeabcdefghijklmn
${var/%pattern/substr}:查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/%mn/123456} #将以mn结尾的行从后向前替换为123456,没被替换的保留 abcdeabcdefghijkl123456
字符串删除
${var/pattern}:删除var所表示的字符串中第一次被pattern所匹配到的字符串
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/cde} ababcdefghijklmn
${var//pattern}:删除var所表示的字符串中所有被pattern所匹配到的字符串
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var//cde} ababfghijklmn
${var/#pattern}:删除var所表示的字符串中所有以pattern为行首所匹配到的字符串
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/#abc} deabcdefghijklmn${var/%pattern}:删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var/%lmn} abcdeabcdefghijk
字符串转换
${var^^}:把var中的所有小写字母转换为大写
[root@CentOS7 bin]# echo ${var} abcdeabcdefghijklmn [root@CentOS7 bin]# echo ${var^^} ABCDEABCDEFGHIJKLMN${var,,}:把var中的所有大写字母转换为小写
[root@CentOS7 bin]#⮀echo ${var} ABCDEABCDEFGHIJKLMN [root@CentOS7 bin]#⮀echo ${var,,} abcdeabcdefghijklmn