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 字符串处理的更多相关文章
- linux shell 字符串操作(长度,查找,替换)详解
linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...
- Shell 字符串比较
转自网络 Shell字符串比较 收藏 Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等. 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. --- ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- 【转】shell字符串截取
shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...
- shell字符串的用法
shell字符串的用法 注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能 获取字符串长度:${#string} 获取子串: 注:(左边的第一个字符是用 0 表示 ...
- Linux脚本shell字符串处理
Linux脚本shell字符串处理,基本都有了,看着搜吧 TLDP教堂 shell中if条件字符串.数字比对,[[ ]]和[ ]区别 Linux 之 shell 比较运算符 Linux Shell编程 ...
- 【Linux】shell字符串分割、数组访问、条件判断
参考资料: shell字符串分割再循环:http://www.shangxueba.com/jingyan/1633455.html linux shell中 if else以及大于.小于.等于逻辑表 ...
- shell 字符串中定位字符位置 获取字符位置
linux shell 字符串操作(长度,查找,替换)详解 该博文中描述的如下两个字符串操作, ${string:position} #在$string中, 从位置$position开始提取子串 ${ ...
- Shell字符串操作
@1:子串削除 ${string#substring} 从$string 的开头位置截掉最短匹配的$substring. ${string##substring} 从$string 的开头位置截掉最长 ...
- Linux Shell系列教程之(五)Shell字符串
本文是Linux Shell系列教程的第(五)篇,更多shell教程请看:Linux Shell系列教程 字符串是Shell编程中最常用最有用的数据类型,今天,Linux大学网就为大家介绍一下在She ...
随机推荐
- 【编程语言】extern "C"让C++与C进行混合编程
最近工作不算轻松,现在作为一个项目的负责人统一管理着前端.后端.设计.产品,身上肩负着不小责任,虽然有压力但是对于自己也是一种锻炼.同时自己也在负责整个后端的架构设计,虽然后端经验不是很多,但是自己正 ...
- JVM垃圾回收(三)- GC算法:基础
GC算法:基础 在介绍GC算法在实际场景中的实现之前,我们先定义一些必要的术语,以及GC算法的基本准则.具体的细节会因收集器的不同而稍有区别,但是基本上来说,所有的收集器会关注以下两个方面: 找出所有 ...
- LRU算法的Java实现
LRU全称是Least Recently Used,即最近最久未使用的意思. LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小.也就是说,当限定的空间已 ...
- nginx 和 tp兼容pathinfo和rewrite两种url访问方式
环境:centos7,yum安装的nginx1.10.php-fpm,tp3.2 本方法只需要配置nginx.conf的一个文件就可以支持pathinfo和rewrite两种url访问方式 vim / ...
- git 拉取远程代码
git 拉取远程代码 || 利用vscode编辑器自带了git,可在ctrl+~打开控制台拉取代码,非常好用哦~在实际项目开发过程中,往往是已经存在远程项目了,我们定义的需求是只需要简单的操作git, ...
- spring boot中实现security错误信息本地化
一.修改messages.properties 找源码中的messages.properties,复制一份放在classpath下,修改你要修改的内容 AbstractUserDetailsAuthe ...
- ES5 & ES6 基础
一.什么是ES5 附上一览表 (5.1中文 (2011.6)): http://lzw.me/pages/ecmascript/ (5.1英文PDF):http://www.ecma-internat ...
- CentOS7系统上的LAPACK源码安装
参考链接:linux下安装blas和lapack BLAS 和 LAPACK 这两个数学库是很多 Linux 科学计算软件需要调用的,所以经常会用到. LAPACK,其名为Linear Algebra ...
- China MVP Community Connection 2017
在微软北京和小朋友们参加编程一小时活动
- SharePoint附加内容数据库时报错
今天遇到一个很奇怪的问题,在sharepoint管理中心中给web application添加内容数据库时报错:The SharePoint database named WSS Content al ...