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 ...
随机推荐
- MyBatis 项目开发中是基于 XML 还是注解?
只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- 并发编程-Condition
Condition 一个Lock中应该绑定一个Condition对象.Condition是Java提供用来实现等待/通知的类. 我们知道Object对象提供了wait.waitAll.notify.n ...
- 摄像头ISP系统原理(下)
摄像头ISP系统原理(下) l WDR(Wide Dynamic Range)------宽动态 动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最 ...
- gpgpu-sim卡分配程序设计实例分析
gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...
- STS或eclipse中导入新项目出现红色感叹号红色叉叉的问题
maven项目 原因: jar包缺失 没有正确配置Maven仓库 解决: Window->Preferences->Maven->Installations->Add 添加你的 ...
- Spring Reactor 入门与实践
适合阅读的人群:本文适合对 Spring.Netty 等框架,以及 Java 8 的 Lambda.Stream 等特性有基本认识,希望了解 Spring 5 的反应式编程特性的技术人员阅读. 一.前 ...
- js 统计图插件chart.js
chart是一个纯js插件,它功能强大小巧使用也很简单. 第一步引入 chart.js . <script type="text/javascript" src=" ...
- ThreadPoolExecutor参数详解
ThreadPoolExecutor全部参数的构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long ke ...
- csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」
夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$n+m$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所 ...