1、字符串删除
1.1 删除开头或结尾的整段字符串
格式:
${变量#匹配规则} //从头开始匹配,最短删除; ${变量##匹配规则} //从头开始匹配,最长删除; ${变量%匹配规则} //从尾开始匹配,最短删除; ${变量%%匹配规则} //从尾开始匹配,最长删除; 复制代码
示例:
${i#*,} //从左往右最短匹配,以第一个逗号为休止符,将这之间的所有字符都删除(包括第一个逗号) ${i##*,} //从左往右最长匹配,以最后一个逗号为休止符,将这之间的所有字符都删除(包括最后第一个逗号) ${i%,*} //从右往左最短匹配,以第一个逗号为休止符,将这之间的所有字符都删除(包括第一个逗号) ${i%%,*} //从右往左最长匹配,以最后一个逗号为休止符,将这之间的所有字符都删除(包括最后一个逗号) 复制代码
演示1:
[root@yuji ~]# i="11,22,33,44" [root@yuji ~]# echo $i 11,22,33,44 [root@yuji ~]# echo ${i#*,} 22,33,44 [root@yuji ~]# echo ${i##*,} 44 [root@yuji ~]# echo ${i%,*} 11,22,33 [root@yuji ~]# echo ${i%%,*} 11 复制代码
网络异常,图片无法展示
|
演示2:
[root@yuji ~]# name="the great gatsby" [root@yuji ~]# echo $name the great gatsby [root@yuji ~]# echo ${name#*a} t gatsby [root@yuji ~]# echo ${name##*a} tsby [root@yuji ~]# echo ${name%a*} the great g [root@yuji ~]# echo ${name%%a*} the gre 复制代码
网络异常,图片无法展示
|
1.2 删除中间的某个字符或单词
格式:
${变量/pattern/} //删除第一次被pattern匹配到的字符或字符串 ${变量//pattern/} //删除所有被pattern匹配到的字符或字符串 ${变量/#pattern/} //删除开头被pattern匹配到的字符或字符串 ${变量/%pattern/} //删除结尾被pattern匹配到的字符或字符串 复制代码
示例:
${i/a/} //删除第一次匹配到的a ${i//a/} //删除所有的a ${i/#a/} //删除开头的a(a必须是开头第一个字符才会被删除) ${i/%a/} //删除结尾的a(a必须是结尾最后一个字符才会被删除) 复制代码
演示:
[root@yuji ~]# j="aa,bb,cc,bb,aa" [root@yuji ~]# echo $j aa,bb,cc,bb,aa [root@yuji ~]# echo ${j/bb/} //删除第一次匹配到的bb aa,,cc,bb,aa [root@yuji ~]# echo ${j//bb/} //删除所有bb aa,,cc,,aa [root@yuji ~]# echo ${j/#bb/} //删除开头的bb,因为开头不是bb,所以不会生效 aa,bb,cc,bb,aa [root@yuji ~]# echo ${j/#aa/} //删除开头的aa ,bb,cc,bb,aa [root@yuji ~]# echo ${j/%aa/} //删除结尾的aa aa,bb,cc,bb, 复制代码
网络异常,图片无法展示
|
2、字符串替换
格式:
${变量/旧字符串/新字符串} //替换变量内的旧字符串为新字符串,只替换第一次匹配到的 ${变量//旧字符串/新字符串} //替换变量内的旧字符串为新字符串,全部替换 ${变量/%旧字符串/新字符串} //替换变量内的旧字符串为新字符串,只替换结尾的 复制代码
示例:
${i/a/b} //将第一个a替换成b ${i//a/b} //将所有a替换成b ${i/#a/b} //将开头的a替换成b(a必须是开头第一个字符才会被替换) ${i/%a/b} //将结尾的a替换成b(a必须是结尾最后一个字符才会被替换) 复制代码
演示:
[root@yuji ~]# k="aa,bb,cc,aa" [root@yuji ~]# echo $k aa,bb,cc,aa [root@yuji ~]# echo ${k/aa/999} //将第一个aa替换成999 999,bb,cc,aa [root@yuji ~]# echo ${k//aa/999} //将所有aa替换成999 999,bb,cc,999 [root@yuji ~]# echo ${k/%aa/999} //将结尾的aa替换成999 aa,bb,cc,999 复制代码
网络异常,图片无法展示
|
3、字符串切片
格式:
${#变量名} //获取字符串长度 #字符下标值(字符索引): 字符串内,第一个字符的下标值为0,第二个字符的下标值为1,最后一个字符的下标值为字符串长度减1。 ${变量名:开始的下标值:截取长度} //截取字符串,字符的下标值(索引)从0开始 复制代码
示例:
i="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 字符串长度:${#i} //此时长度为62 字符串内的字符下标值:0-61 截取第一个字符:${i:0:1} 截取前三个字符:${i:0:3} 截取最后一个字符:${i:61:1} 复制代码
字符串切片在之前的文章中有详细介绍,这里不再赘述。可以查看:
shell编程之循环语句 for (包看包会 如果不会 再看一遍) - 掘金 (juejin.cn)