加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell变量的子串的截取/删除/替换

发布时间:2020-12-15 17:05:42 所属栏目:安全 来源:网络整理
导读:$ {#string} 返回 $ string的长度 $ {string:position} 在 $ string中,从 $ position位置之后开始提取子串 $ {string:position:length} 在 $ string中,从 $ position位置之后开始提取 $ length长度的子串 1 2 3 4 5 6 7 8 9 10 11 12 13 [root @localhost

${#string}
返回$string的长度

${string:position}
$string中,从$position位置之后开始提取子串

${string:position:length}
$string中,从$position位置之后开始提取$length长度的子串

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
[root@localhost SHELL]# NAME="ni hao,ming tian" [root# echo $NAME ni hao,ming tian [root# echo ${NAME} ni hao,0)"># echo ${#NAME} 17 [root# echo ${NAME:3} hao,0)"># echo ${NAME:3:6} hao,m [root#

${string#substring}
从变量$string开头开始删除最短匹配$substring子串

${string##substring}
从变量$string开头开始删除最长匹配$sunstring子串

8
 
 e
[root# echo $NAME
abcABC123ABCabcde
[root# echo ${NAME#a*C}
123ABCabcde
[root# echo ${NAME##a*C}
abcde
[root ${string%substring}
从变量$string结尾开始删除最短匹配$substring子串

${string%%substring}
从变量$string结尾开始删除最长匹配$substring子串

13
  
  
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • [root# NAME=abcABC123ABCabc [root# echo $NAME abcABC123ABCabc [root# echo ${NAME%%a*c} [root# echo ${NAME%a*c} abcABC123ABC [root# echo ${NAME#b*c} abcABC123ABCabc [root# echo ${NAME#bc} abcABC123ABCabc [root# echo ${NAME%bc} abcABC123ABCa [root# echo ${NAME%%bc} abcABC123ABCa [root# echo ${NAME%C*c} abcABC123AB [root# echo ${NAME%%C*c} abcAB [root# echo ${NAME%%C*b} abcABC123ABCabc [root# echo ${NAME} abcABC123ABCabc [root 注意:在进行#或##匹配时,$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

       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    [root# NAME="I am a student student" [root# echo ${NAME//student/teacher} I am a teacher teacher [root# echo ${NAME/#student/teacher} I am a student student [root# echo ${NAME/%student/teacher} I am a student teacher [root# echo ${NAME/%I am /teacher} I am a student student [root# echo ${NAME/#I am /teacher} teachera student student [root# echo ${NAME/#I am a/teacher} teacher student student [root# echo $NAME I am a student student [root#

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读