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

09-22 80阅读 0评论

大小写转化

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

示例

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

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

获取字符串长度

${#string} 

替换

整体替换

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

部分替换

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

截取

# 从string字符串的左边第start个字符开始(不含第start个字符),向右截取到最后,start从0开始; ${string: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:4=${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

运行结果:

wwwbilibiliwww bilibiliwww...bilibiliwww.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 var2 var3 

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

字符串比较

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

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

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,80人围观)

还没有评论,来说两句吧...