shell 字符串截取操作

字符串操作(长度,读取,替换)

{#string} $string的长度 
    
${string:position} 在$string中, 从位置$position开始提取子串  
${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串  
    
${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串  
${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串  
${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串  
${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串  
    
${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring  
${string//substring/replacement} 使用$replacement, 代替所有匹配的$substring  
${string/#substring/replacement} 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring 
${string/%substring/replacement} 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring 

例如:

假设有变量 var=http://www.aaa.com/123.htm.

1. # 号截取,删除左边字符,保留右边字符。

1

echo ${var#*//}

 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.aaa.com/123.htm

2. ## 号截取,删除左边字符,保留右边字符。

1

echo ${var##*/}

##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/

结果是 123.htm

3. %号截取,删除右边字符,保留左边字符

1

echo ${var%/*}

%/* 表示从右边开始,删除第一个 / 号及右边的字符

结果是:http://www.aaa.com

4. %% 号截取,删除右边字符,保留左边字符

1

echo ${var%%/*}

 %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:

5. 从左边第几个字符开始,及字符的个数

1

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:

6. 从左边第几个字符开始,一直到结束。

1

echo ${var:7}

其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm

7. 从右边第几个字符开始,及字符的个数

1

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123

8. 从右边第几个字符开始,一直到结束。

1

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。
结果是:123.htm

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

猜你喜欢

转载自blog.csdn.net/qq_36492368/article/details/84134239