shell编程:字符串处理方式
字符串处理方式
- 计算字符串长度
- 获取子串在字符串中的索引位置
- 计算子串长度
- 抽取(截取)字串
1、计算字符串长度,有两种方式
$ ${#string}
$ expr length "$string" // 如果 string 里面包含空格,则 $string 加上双引号,建议一直加上
注意:mac没有 expr命令,xshell登陆 linux服务器可以执行 expr命令
例1:
$ var="java python golang kafka"
$ len=${#var}
$ echo len
打印结果:24
$ len=`expr length "$var"` // 这里要用反引号 ` ` 。
$ echo $len
打印结果:24
2、获取子串在字符串中的索引位置(本质上是 将子串拆分成很多单个的字符,然后看哪个字符最先在字符串中出现,则返回这个字符的索引位置)
$ expr index $string $substring
例2:
$ var="quickstart is a app"
$ ind=`expr index "$var" start`
$ echo $ind
打印结果:6 // 下标从 1 开始数
$ ind=`expr index "$var" uniq`
$ echo $ind
打印结果:1 // 'q' 这个字符最先出现在字符串中,并且位置是 1
3、获取子串的长度
$ expr match $string substr
例3:
$ var="quickstart is a app"
$ sub_len=`expr match "$var" app` // 需要从头匹配,并且匹配成功,否则返回 0
$ echo $sub_len
打印结果:0
$ sub_len=`expr match "$var" quic` // 正常匹配
$ echo $sub_len
打印结果:4
$ sub_len=`expr match "$var" qui.*` // 获取整个字符串的长度
$ echo $sub_len
打印结果:19
$ sub_len=`expr match "$var" quik` // 匹配失败
$ echo $sub_len
打印结果:0
4、抽取子串,五种方式
$ ${string:position} // 从 string 的 position 开始
$ ${string:position:length} // 从 string 的 position 开始,取 length 个长度的字符
$ ${string: -position} // 从右边开始匹配,注意":" 和 "-" 之间有空格
$ ${string:(position)} // 从左边开始匹配
$ expr substr $string $position $length // 从 position 开始,匹配长度为length
例4:
$ var="java python golang kafka"
$ substr1=${var:3} // 下标从 0 开始,下标为 3 的字符刚好是 a
$ echo $substr1
打印结果:a python golang kafka
$ substr2=${var:3:5}
$ echo $substr2
打印结果:a pyt
$ substr3=${var: -5} // 最后一个字符为 -1。 等价于:substr3=${var:(-5)}
$ echo $substr3
打印结果:kafka
$ substr3_1=${var: -5:2} // 扩展一个
$ echo $substr3_1
打印结果:ka
$ substr4=${var:(5)} // 从左边第5个开始取
$ echo $substr4
打印结果:python golang kafka
$ substr5=`expr substr "$var" 10 5` // expr 下标从 1 开始,然后从第 10 个开始取
$ echo $substr5
打印结果:on go
注意:expr 方式下标从 1 开始; ${ }方式下标从 0 开始
shell编程:字符串处理方式的更多相关文章
- [ SHELL编程 ] 字符串空格和文件空行删除
1.删除字符串中空格 (1)删除行首空格 (2)删除行尾空格 (3)删除前.后空格,不删除中间空格 (4) 删除字符串中所有空格 echo " 123 567 " | sed 's ...
- centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课
centos shell编程4[分发系统] 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要 ...
- shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/ind ...
- SHELL脚本编程-字符串处理
SHELL脚本编程-字符串处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符串切片 [root@node101.yinzhengjie.org.cn ~]# echo { ...
- shell编程系列19--文本处理三剑客之awk中的字符串函数
shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...
- shell编程系列4--有类型变量:字符串、只读类型、整数、数组
shell编程系列4--有类型变量:字符串.只读类型.整数.数组 有类型变量总结: declare命令和typeset命令两者等价 declare.typeset命令都是用来定义变量类型的 decla ...
- ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas
? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...
- 《解读window核心编程》 之 字符和字符串处理方式
推荐的字符和字符串处理方式 開始将文本字符串想象为字符的数组,而不是 char 或字节的数组. 用通用数据类型(如 TCHAR/PTSTR )来表示文本字符和字符串. 用明白的数据类型(如 BYTE ...
随机推荐
- 利用select单线程点对点聊天
select的优点与使用方法 select用单线程的方法遍历所有待读写的I/O接口, 当有接口可用时就会返回. select可设置电脑阻塞或非阻塞. 特别注意: 每次select前都要重新初始化集合和 ...
- 将本地图片数据制作成内存对象数据集|tensorflow|手写数字制作成内存对象数据集|tf队列|线程
样本说明: tensorflow经典实例之手写数字识别.MNIST数据集. 数据集dir名称 每个文件夹代表一个标签label,每个label中有820个手写数字的图片 标签label为0的文件夹 ...
- HTML创建文本框的3种方式
我的第一个随笔,记录主要用来整理学习的知识点 1.input 创建单行文本框 <input type="text" size="10" maxlength ...
- 厉害了,Java EE 再次更名为 Jakarta EE
来自:开源中国 https://www.oschina.net/news/108108/java-ee-rename-as-jakarta-ee Eclipse基金会最近对 Java EE 标准的每个 ...
- smb.conf免密登录文件
# This is the main Samba configuration file. You should read the# smb.conf(5) manual page in order t ...
- 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com
原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...
- xampp环境下,配置Zend Studio调试php(XDebug) 转摘:http://www.cnblogs.com/tuyithief/archive/2011/06/02/2068431.html
先说一下文件版本,xampp 1.7.4,php 5.3.5. 走了很多弯路,截止目前,ZendDebugger在php 5.3.x下,只有nts版本,既non Thread Safety(具体什么意 ...
- 2019牛客暑期多校训练营(第九场)A.The power of Fibonacci
题意:给出n和m,f(n)是斐波那契额数列的第n项,要求计算ans=f(1)^m+f(2)^m+....f(n)^m.即斐波那契额数列前n项的m次幂和. 解法:这题好像有两种解法:一种是循环节+CRT ...
- ORACLE 11G新特性之一(增加带default的字段)
在11g之前,增加带default值的字段,实现原理如下: alter table t1 add c1 varchar2(20) default 'XX' not null; 假设t1表有4千万行数据 ...
- vscode 常用的插件
这些是本人在使用vscode中用的比较爽的插件,个人爱好习惯不同,请按需拿取.先声明本人是一个前端,所用的,插件都是和前端匹配的,后台的同学可以不用浪费时间了 基础插件 chinese 英文是所有读书 ...