开发者

Shell实现字符串处理的方法详解

开发者 https://www.devze.com 2022-12-07 12:38 出处:网络 作者: 农民工老王
目录大小写转化获取字符串长度替换整体替换部分替换截取补充大小写转化 # 把变量中的第一个字符换成大写
目录
  • 大小写转化
  • 获取字符串长度
  • 替换
    • 整体替换
    • 部分替换
  • 截取
    • 补充

      大小写转化

      # 把变量中的第一个字符换成大写
      ${test^}
      
      # 把变量中的所有小写字母,全部替换为大写
      ${test^^}
      
      # 把变量中的第一个字符换成小写
      ${test,}
      
      NCGzjflI# 把变量中的所有大写字母,全部替换为小写
      ${test,,}
      

      示例

      #!/bin/bash
      # script file name is test.sh 
      test="abcDEF"
      echo "test^=${test^}"
      echo "test^^=${test^^}"
      echo "test,=${test,}"
      echo "test,,=${test,,}"
      

      Shell实现字符串处理的方法详解

      获取www.devze.com字符串长度

      ${#string}
      

      替换

      整体替换

      # 若变量var为空,则用string来替换此处的值,最常用。
      ${var:-string}
      
      # 若变量var为空,则用string来替换此处的值,把string赋给变量var。
      ${var:=string}
      
      # 若变量var不为空,则用string来替换此处的值。
      ${var:+string}
      
      #python 若变量var不为空,则用string来替换此处的值;
      # 若变量var为空,则把string输出到标准错误中,并从脚本中退出。
      # 常用利用此特性来检查是否设置了变量的值。
      ${var:?string}
      

      部分替换

      # 只替换第1个子串
      ${var/old/new}
      
      # 替换全部子串
      ${var//old/new}
      

      截取

      # 从string字符串的左边第start个字符开始(不包含第start个字符),向右截取到最后,start从0开始;
      ${s编程tring:start}
      
      # 从string字符串的左边第start个字符开始(不包含第start个字符),向右截取length个字符;
      ${string:start:length}
      
      # 从string字符串的右边第start个字符开始(包含第start个字符),向右截取到最后,start从1开始;
      ${string:0-start}
      
      # 从string字符串的右边第start个字符开始(包含第start个字符),向右截取length个字符,start从1开始;
      ${string:0-start:length}
      
      # 从string字符串左边第一次出现*chars的位置开始,截取*chars右边的所有字符,不包含chars;
      ${string#*chars}
      
      # 从string字符串左边最后一次出现*chars的位置开始,截取*chars右边的所有字符,不包含chars;
      ${string##*chars}
      
      # 从string字符串右边第一次出现chars*的位置开始,截取chars*左边的所有字符,不包含chars;
      ${string%chars*}
      
      # 从string字符串右边最后一次出现chars*的位置开始,截取chars*左边的所有字符,不包含chars;
      ${string%%*chars*}
      

      示例

      #!/bin/bash
      # script file name is test.sh 
      url="https://blog.csdn.net/monarch91"
      echo "url=${url}"
      echo "url:8=${url:8}"
      echo "url:8:http://www.devze.com4=${url:8:4}"
      echo "url:0-8=${url:0-8}"
      echo "url:0-8:4=${url:0-8:4}"
      echo "url#*c=${url#*c}"
      echo "url##*c=${url##*c}"
      echo "url%c*=${url%c*}"
      echo "url%%c*=${url%%c*}"
      

      Shell实现字符串处理的方法详解

      补充

      当然,除了以上操作,Shell还有许多字符串操作,下面小编为大家整理了一些,需要的可以参考一下

      字符串的拼接

      str1=www
      str2=bilibili
      
      string1=$str1$str2              #中间不加别的,直接放一起
      string2="$str1 $str2"           #双引号括住,中间可加任意字串
      string3=$str1"..."$str2         #整体不加引号,若中间要出现别的字串需前后紧挨,且字串双引号括住
      string4="${str1}.${str2}.com"   #也可以使用${}方式引用变量
      
      echo $string1
      echo $string2
      echo $string3
      echo $string4

      运行结果:

      wwwbilibili

      www bilibili

      www...bilibili

      www.bilibili.com

      读取字符串

      $ echo ${abc-'ok'}
      ok
      
      $ echo $abc
      $ echo ${abc='ok'}
      ok
      $ echo $abc
      ok
      
      $ var1=11;var2=12;var3=
      $ echo ${!v@}
      var1 var2 var
      
      $ echo ${!v*}
      var1 va开发者_CICDr2 var3
      

      #${!varprefix*}${!varprefix@}相似,可以通过变量名前缀字符,搜索已经定义的变量,无论是否为空值。

      字符串比较

      [[ "a.txt" == a* ]]        #逻辑真(pattern matching)
      [[ "a.txt" =~ .*\.txt ]]   #逻辑真(regex matching)
      [[ "abc" == "abc" ]]       #逻辑真(string comparision)
      [[ "11" < "2" ]]           #逻辑真(string comparision),按 ascii 值比较
      

      到此这篇关于Shell实现字符串处理的方法详解的文章就介绍到这了,更多相关Shell字符串处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号