Java教程

Bash编程中字符串的操作

本文主要是介绍Bash编程中字符串的操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Bash的字符串操作

目录

1.获取字符串的长度
2.字符串内容截取
3.搜索和替换
4.大小写转换

1.获取字符串长度

String="Hello World"

#获取字符串长度,获取字符长度的变量调用应该使用${},这里大括号是必须的
#例1-1
echo ${#String}

~$ 11

2.字符串内容截取

String="Hello World"

#${String:开始截取的位置:结束截取的位置}
#例1-2:
echo ${String:6:10}
~$ World 
#例1-2的开始位置是6,但是bash实际截取位置在6+1,即W字符的位置
#结束截取的位置是10,实际截取结果是d (d在此处是第11位字符). 可以得知bash在字符截取法上使用了N+1的方式

#字符串截取的缺省用法
#字符串截取可以缺省 “开始截取位置” 和 “结束截取位置” 中任意一个
#例1-3:
echo ${String:6}
~$ World
#缺省位置bash会默认使用最长位置进行填充,例1-3中从第6位开始截取到最后一位字符

#例1-4:
echo ${String::11}
~$ Hello World
#例1-4中bash将开始截取位置模式填充到了第一个字符,所以结果是获取全部的字符串

#字符串截取可以使用负数的办法进行截取
#例1-5
echo ${String: -6}
~$ World
#使用负数时N+1将失效,按照实际字符位置进行截取,在-号前应当注意添加空格,不然会和默认变量值产生冲突

3.搜索和替换

#pattern匹配模式
#panttern匹配模式有头部匹配模式和尾部匹配模式两种,在这两种匹配模式的基础之上还有贪婪匹配和非贪婪匹配.
#贪婪匹配的意思是匹配尽量多的内容,非贪婪匹配是匹配尽量少的内容,panttern匹配支持?,*,[]通配符
#所有匹配模式均是删除匹配到字符,且必须连续不中断.连续不中断的意思是匹配的字符中间没有任何的隔断
#例1-6
#头部匹配模式中的非贪婪匹配
String="Hello World, My name is Bash. Hello"
echo ${String#?e?}
~$ llo World, My name is Bash. Hello

echo ${String##?e?}
~$ lo World, My name is Bash. Hello
#在这个匹配中,贪婪匹配和非贪婪匹配的结果一致,字符串末尾的Hel并没有被匹配
#此时如果将字符串开头的Hello改成Helleo
 String="Helleo World, My name is Bash. Hello"
 
 echo ${String##?e?}
 ~$ leo World, My name is Bash. Hello
 #也并没有匹配到Helleo中的第二个?e?
 
 #尾部匹配模式的符号是%
 #例1-6-1
 echo ${String%?l?}
 ~$ Hello World, My name is Bash. He
 #会从字符串末尾匹配字符
 #贪婪匹配使用两个%%符号,匹配效果和##相比较就是从字符串末尾开始计算
#panttern匹配模式的匹配很奇怪,有一些不能理解, “非常规整并可以非常方便的使用通配符进行匹配的字符串” ,否则不建议使用panttern匹配
#例:1-6-2 (来自https://wangdoc.com/bash/string.html)
myPath=root/home/cam/book/long.file.name

echo ${myPath%/*}
~$ root/home/cam/book

echo ${myPath%%/*}
~$ root
#例1-6-2就符合上述所说非常规整并可以非常方便的使用通配符进行匹配的字符串
这篇关于Bash编程中字符串的操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!