2shell中处理字符串,字符串的截取、替换
- 0.字符串的小知识点
- 1.字符串的截取
- 1.1从指定位置开始截取
- 1.2 从指定字符(子字符串)开始截取
- 1.3字符串截取的总结
- 1.4 按指定要求截取
- 2.字符串的拼接
- 3.字符串的替换
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} | 删除从开始到第一次出现chars(包含)的所有字符 | |
| ${string##*chars} | 删除从开始到最后一次chars(包含)的所有字符 | |
| ${string%chars*} | 从右边删除到第一次出现chars(包含)的所有字符 | |
| ${string%%chars*} | 从右边删除到最后一次出现chars(包含)的所有字符 |
1.4 使用cut截取字符串
参考:cut用法
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:\windows\boot.ini |
2shell中处理字符串,字符串的截取、替换的更多相关文章
- String字符串操作--切割,截取,替换,查找,比较,去空格.....
字符串拼接 直接用+号:String a = "I"; String b = "love"; String c = "you";String ...
- Python 字符串操作(截取/替换/查找/分割)
Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '1234567 ...
- oracle操作字符串:拼接、替换、截取、查找
1.拼接字符串 1)可以使用“||”来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select concat('拼接', '字 ...
- java中常用的字符串的截取方法
java中常用的字符串的截取方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...
- oracle操作字符串:拼接、替换、截取、查找、长度、判断
1.拼接字符串 1)可以使用“||”来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select concat('拼接', '字 ...
- mysql 字符串 拼接 截取 替换
一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:) as abstract ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
转自: http://www.cnblogs.com/huangcong/archive/2011/08/29/2158268.html 黄聪:Python 字符串操作(string替换.删除.截取. ...
- vim /vi中对字符串的查找并替换
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
随机推荐
- dd命令详解-(转自dkcndk)
Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.名称: dd 使用权限: 所有使用者dd 这个指令在 ...
- lvscan 查看系统中存在的所有LVM逻辑卷
相关命令:lvresize,lvreduce,lvextend,lvdisplay,lvcreate,lvremove lvscan指令:扫描逻辑卷[语 法]lvscan [选项][功能介绍]l ...
- KMP算法中我对获取next数组的理解
之前在学KMP算法时一直理解不了获取next数组的函数是如何实现的,现在大概知道怎么一回事了,记录一下我对获取next数组的理解. KMP算法实现的原理就不再赘述了,先上KMP代码: 1 void g ...
- final 修饰符
修饰属性,方法,类 1.修饰属性 属性只能被赋值一次 基本类型:值不能改变 引用类型:引用不可以被修改 2.修饰方法 表示方法不可以被重写,但可以被子类访问 3.修饰类 表示类不可以被继承 //fin ...
- VTA:深度学习加速器堆栈
VTA:深度学习加速器堆栈 多功能Tensor加速器(VTA)是一个开放的,通用的,可定制的深度学习加速器,具有完整的基于TVM的编译器堆栈.设计VTA来展示主流深度学习加速器的最显着和共同的特征.T ...
- 狂神说JUC学习笔记(二)
狂神说JUC的原版笔记: 链接:https://pan.baidu.com/s/12zrGI4JyZhmkQh0cqEO4BA 提取码:d65c 我的笔记在狂神的笔记上增加了一些知识点或者做了些许补充 ...
- Nginx虚拟主机流量状态模块(nginx-module-vts)使用说明文档(四)
装完NG,为了拿到各种状态指标,就要对NG做监控. Github 2.3k的开源项目nginx-module-vts没准真是你需求的. 链接数,qps,1xx.2xx,.3xx.4xx.5xx的响应数 ...
- pytest命令行参数
1.-v:可以输出用例更加详细的执行信息,如下图 C:\Users\cale\checkapi\test_cc>pytest test_m1.py -v ==================== ...
- 【NX二次开发】获得屏幕矩阵并设置WCS为屏幕方向
说明:获得屏幕矩阵并设置WCS为屏幕方向(Z朝向自己,X轴朝右,Y轴超上). 方法: 1 extern DllExport void ufusr(char *param, int *retcode, ...
- TensorFlow入门实操课程第一章教程笔记
神经元网络深度学习的起步程序 Hello World 第一个应用程序总是应该从超级简单的东西开始,这样可以看到代码如何产生和运作的整体框架. 就创建神经网络而言,我喜欢使用的例子是一个能够学习两组数字 ...