2shell中处理字符串
Posted yuandian43
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2shell中处理字符串相关的知识,希望对你有一定的参考价值。
0.字符串的小知识点
字符串可以由单引号‘ ‘
包围,也可以由双引号" "
包围,也可以不用引号,它们之间是有区别的:
1) 由单引号‘ ‘
包围的字符串:
- 任何字符都会原样输出,在其中使用变量是无效的。
- 字符串中不能出现单引号,即使对单引号进行转义也不行。
2) 由双引号" "
包围的字符串:
- 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
- 字符串中可以出现双引号,只要它被转义了就行。
3) 不被引号包围的字符串
- 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号
" "
包围的字符串一样。 - 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。
获取字符串长度可以用${#string_name}
1.字符串的截取
1.1从指定位置开始截取
原理 |
原始字符串 var=http://www.aaa.com/123.html | 结果 |
---|---|---|
左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示,起始数字是1 ${string: start :length} start :length指定起始位置和长度,长度省略的话表示直到字符串的末尾 |
echo ${var:0:5} |
http: |
echo ${var:7} |
www.aaa.com/123.html | |
echo ${var:0-7:3} |
23. | |
echo ${var:0-7} |
23.html |
1.2 从指定字符(子字符串)开始截取
原理 |
原始字符串 var=http://www.aaa.com/123.html | 结果 |
---|---|---|
#、## 表示从左边开始删除。 一个 # 表示从左边删除到第一个指定的字符; 两个 # 表示从左边删除到最后一个指定的字符。 |
echo ${var#*/} | /www.aaa.com/123.html |
echo ${var##*/} | 123.html | |
%、%% 表示从右边开始删除。 一个 % 表示从右边删除到第一个指定的字符; 两个 % 表示从左边删除到最后一个指定的字符。 删除包括了指定的字符本身。 |
echo ${var%/*} | http://www.aaa.com |
echo ${var%%/*} | http: | |
如果不需要忽略指定字符左边/右边的字符,那么也可以不写 *表示零个或多个任意字符,?表示仅与一个任意字符匹配,[…]表示匹配中括号里面的字符,[!..]表示不匹配中括号里面的字符。 |
echo ${var#http:/} echo ${var%/123.html} |
/www.aaa.com/123.html http://www.aaa.com |
1.3字符串截取的总结
格式 | 说明 | 举栗 |
---|---|---|
${string: 0-start :length} | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
var=/home/wwwroot/ echo $var #result is /home/wwwroot/ echo ${var:5} #result is /wwwroot/ echo ${var: -5} #result is root/ echo ${var:(-5)} #result is root/ echo ${var:0-5} #result is root/ echo ${var:1-5} #result is oot/ |
${string: 0-start} |
从 string 字符串的右边第 start 个字符开始截取,直到最后。 从右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如${var: −2}、${var:0-2}或${var:(-2)}。 |
|
${string: start :length} | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
var="http://www.runoob.com/linux/linux-shell-variable.html" s1=${var%%t*} 结果:h s2=${var%t*} 结果:http://www.runoob.com/linux/linux-shell-variable.h s3=${var%%.*} 结果:http://www s4=${var#*/} 结果:/www.runoob.com/linux/linux-shell-variable.html s5=${var##*/} 结果:linux-shell-variable.html |
${string: start} | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 | |
${string#*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 | |
${string##*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 | |
${string%*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 | |
${string%%*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
1.4 按指定要求截取
ls -al | cut -d "." -f2 获取后缀名
echo $test|cut -c1-8
2.字符串的拼接
脚本 | 结果 | 注意点 | |
---|---|---|---|
拼接字符 |
$value1=home $value2=${value1}"=" echo $value2 |
home= |
1.在 Shell 中不需要使用任何连接符,将两个字符串并排放在一起就能实现拼接 2.变量名要加{},避免变量名与其他字符向混淆 |
拼接字符串 |
var0=test var1=43 echo ${var0}${var1} |
test43 |
3.字符串的替换
语法:${变量/查找/替换值} 一个‘/‘表示替换第一个,‘//‘表示替换所有,当查找中出现了特殊字符"/",需要转移成"/"。
test=‘c:/windows/boot.ini‘
|
脚本
|
结果
|
---|---|---|
替换第一个/ |
echo ${test///\} |
c:windows/boot.ini |
替换所有/ |
echo ${test////\} |
c:windowsoot.ini
|
以上是关于2shell中处理字符串的主要内容,如果未能解决你的问题,请参考以下文章