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 ...
随机推荐
- mybatis 动态添加表,查看表,添加数据
1.动态添加表 mapper int dropExistTable(@Param("tableName") String tableName);//自动创建数据表 映射文件 < ...
- cowboy源码分析(一)
前段时间导读了ranch的源码,具体见ranch 源码分析(一), 现在整理了下ranch框架下经典应用cowboy. 源码地方:https://github.com/ninenines/cowboy ...
- Java程序设计第2次作业
- win7系统内网共享打印机设置
工作中通常使用内网,你同事的计算机连接了一台打印机,老板没给你单独配打印机,莫慌,你可以通过内网连接同事的打印机. 1.在你同事的电脑上启用来宾账户并按照链接设置:https://jingyan.ba ...
- Nullable object must have a value
有一个linq查询,由inner join改成left join, 对于有空值,就会出现Nullable object must have a value 的错误. 原来的查询: var qry = ...
- C++中的getline
https://www.cnblogs.com/ymd12103410/p/9514896.html#undefined
- 怎么让html中 还是显示<button> 而不进行编译
toTXT(str) { var RexStr = /\<|\>|\"|\'|\&| | /g str = str.replace(RexStr, ...
- 关于sql注入漏洞的挖掘及渗透工具简介
大量的现代企业采用Web应用程序与其客户无缝地连接到一起,但由于不正确的编码,造成了许多安全问题.Web应用程序中的漏洞可使黑客获取对敏感信息(如个人数据.登录信息等)的直接访问. Web应用程序准许 ...
- Oralce数据库的优化
Oralce数据库的优化(面试必问) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 ...
- maven项目的配置
软件151 王帅 1.增加web.xml Maven项目最重要的配置文件是pom.xml,pom是“项目对象模型”的意思.现在pom.xml中有一个错误,提示缺少web.xml: 展开目录src—m ...