shell变量的子串的删除/替换
2017-01-02 20:41
274 查看
${#string}
返回$string的长度
${string:position}
在$string中,从$position位置之后开始提取子串
${string:position:length}
在$string中,从$position位置之后开始提取$length长度的子串
${string#substring}
从变量$string开头开始删除最短匹配$substring子串
${string##substring}
从变量$string开头开始删除最长匹配$sunstring子串
${string%substring}
从变量$string结尾开始删除最短匹配$substring子串
${string%%substring}
从变量$string结尾开始删除最长匹配$substring子串
注意:在进行#或##匹配时,$string的首字符必须是被删除子串$substring的第一个字符,不然无法匹配删除;
在进行%或者%%匹配时,$string的最后一个字符必须是被删除子串$substring的最后一个字符,不然无法进行删除操作;
${parameter/parttern/string}
用string来替换第一个匹配的pattern
${parameter/#parttern/string}
从开头匹配parameter变量中的pattern,匹配上后就用string来替换匹配的pattern
${parameter/%pattern/string}
从结尾开始匹配parameter变量中的pattern,匹配上后就用string替换匹配的pattern
${parameter//pattern/string}
用string来替换parameter变量中所有匹配的pattern
返回$string的长度
${string:position}
在$string中,从$position位置之后开始提取子串
${string:position:length}
在$string中,从$position位置之后开始提取$length长度的子串
[root@localhost SHELL]# NAME="ni hao, ming tian" [root@localhost SHELL]# echo $NAME ni hao, ming tian [root@localhost SHELL]# echo ${NAME} ni hao, ming tian [root@localhost SHELL]# echo ${#NAME} 17 [root@localhost SHELL]# echo ${NAME:3} hao, ming tian [root@localhost SHELL]# echo ${NAME:3:6} hao, m [root@localhost SHELL]#
${string#substring}
从变量$string开头开始删除最短匹配$substring子串
${string##substring}
从变量$string开头开始删除最长匹配$sunstring子串
e [root@localhost SHELL]# echo $NAME abcABC123ABCabcde [root@localhost SHELL]# echo ${NAME#a*C} 123ABCabcde [root@localhost SHELL]# echo ${NAME##a*C} abcde [root@localhost SHELL]#
${string%substring}
从变量$string结尾开始删除最短匹配$substring子串
${string%%substring}
从变量$string结尾开始删除最长匹配$substring子串
[root@localhost SHELL]# NAME=abcABC123ABCabc [root@localhost SHELL]# echo $NAME abcABC123ABCabc [root@localhost SHELL]# echo ${NAME%%a*c} [root@localhost SHELL]# echo ${NAME%a*c} abcABC123ABC [root@localhost SHELL]# echo ${NAME#b*c} abcABC123ABCabc [root@localhost SHELL]# echo ${NAME#bc} abcABC123ABCabc [root@localhost SHELL]# echo ${NAME%bc} abcABC123ABCa [root@localhost SHELL]# echo ${NAME%%bc} abcABC123ABCa [root@localhost SHELL]# echo ${NAME%C*c} abcABC123AB [root@localhost SHELL]# echo ${NAME%%C*c} abcAB [root@localhost SHELL]# echo ${NAME%%C*b} abcABC123ABCabc [root@localhost SHELL]# echo ${NAME} abcABC123ABCabc [root@localhost SHELL]#
注意:在进行#或##匹配时,$string的首字符必须是被删除子串$substring的第一个字符,不然无法匹配删除;
在进行%或者%%匹配时,$string的最后一个字符必须是被删除子串$substring的最后一个字符,不然无法进行删除操作;
${parameter/parttern/string}
用string来替换第一个匹配的pattern
${parameter/#parttern/string}
从开头匹配parameter变量中的pattern,匹配上后就用string来替换匹配的pattern
${parameter/%pattern/string}
从结尾开始匹配parameter变量中的pattern,匹配上后就用string替换匹配的pattern
${parameter//pattern/string}
用string来替换parameter变量中所有匹配的pattern
[root@localhost SHELL]# NAME="I am a student student" [root@localhost SHELL]# echo ${NAME//student/teacher} I am a teacher teacher [root@localhost SHELL]# echo ${NAME/#student/teacher} I am a student student [root@localhost SHELL]# echo ${NAME/%student/teacher} I am a student teacher [root@localhost SHELL]# echo ${NAME/%I am /teacher} I am a student student [root@localhost SHELL]# echo ${NAME/#I am /teacher} teachera student student [root@localhost SHELL]# echo ${NAME/#I am a/teacher} teacher student student [root@localhost SHELL]# echo $NAME I am a student student [root@localhost SHELL]#
相关文章推荐
- shell变量的子串的截取/删除/替换
- 【Shell】变量的取用、删除、取代与替换
- shell中变量内容的删除、替换
- 【Shell】变量的取用、删除、取代与替换
- shell高级变量之变量的删除和替换案例
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
- shell变量子串和变量替换常用案例
- 【shell】变量内容的删除和替换
- shell变量替换
- shell变量替换
- Shell: 变量替换 命令替换 & ~波浪号替换的区别
- 【转】SHELL中变量替换
- 尚观学习-shell-置换 & 变量替换 & 引用
- 鸟哥私房菜 变量内容的删除取代和替换
- [Shell]做一个自己的rm命令来替换系统自带的,以免误删除之后恢复不了
- 一个例子明白shell变量替换问题
- Ubuntu命令学习:bash中变量内容的删除、替代与替换
- 变量内容的扩增 删除 取代 替换
- 单引号内引入变量 shell 命令输出赋值给变量,以及用变量替换命令
- linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法