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 ...
随机推荐
- Lua中的元表(metatable)、元方法(metamethod)详解
在第一次看见这两样东西的时候,可能会觉得它很深奥,但其实很好理解,虽然实际上它可能真的很深奥.(小若:停!滚粗.) 1.知道为什么1 + 1 = 2吗? 为什么在Lua中,1+1会等于2呢?(小若:难 ...
- Linux下安装JDK 1.8你必须知道的糟心事
来源:Atstudy网校 1.简介 在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还的一个一个的摸索尝试,而且网上大多数都是一些Or ...
- SystemVerilog 语言部分(二)
接口interface: 既可以设计,也可以用来验证. 验证环境:interface使得连接变得简单不容易出错. interface可以定义端口,单双向信号,内控部使用initial always t ...
- Locust性能测试工具核心技术@task和@events
Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具. Tasks 从上篇文章知道,locustfile里面必须要有一个类,继承User类,当性 ...
- GPU特征处理技术
GPU特征处理技术 GPU和CPU有何不同? 现代片上系统(SoC)通常集成中央处理器(CPU)和图形处理器(GPU).设计不同,这可能更取决于处理的数据集的类型. CPU经过优化,可以一次对几块数据 ...
- TVM性能评估分析(二)
TVM性能评估分析(二) Figure 1. A bird's eye view of the µTVM + AutoTVM infrastructure Figure 2. A standard ...
- Deep Learning部署TVM Golang运行时Runtime
Deep Learning部署TVM Golang运行时Runtime 介绍 TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型.TVM支持来自Te ...
- NVIDIA TensorRT:可编程推理加速器
NVIDIA TensorRT:可编程推理加速器 一.概述 NVIDIA TensorRT是一个用于高性能深度学习推理的SDK.它包括一个深度学习推理优化器和运行时间,为深度学习推理应用程序提供低延迟 ...
- 如何在CPU上优化GEMM(上)
如何在CPU上优化GEMM(上) (TL:DR)TVM提供了抽象接口,用户分别描述算法和算法的实现组织(所谓的调度).通常,在高性能调度中编写算法会破坏算法的可读性和模块性.尝试各种看似有希望的时间表 ...
- IaaS、PaaS 和 SaaS:云服务模型概述
IaaS.PaaS 和 SaaS:云服务模型概述 为您的组织选择合适的云服务模型,可以帮助您充分利用预算和 IT 资源. 基础设施即服务 (IaaS).平台即服务 (PaaS) 以及软件即服务 (Sa ...