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 ...
随机推荐
- C# WebClient实现文件上传
一.同步上传 文章 https://www.cnblogs.com/duanjt/p/6420172.html 里面有提到服务端通过WebApi如何实现文件上传,这里就只说客户端使用WebClient ...
- RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...
- SQLServer2008 查询分析器内容未保存,查找分析器内容
位置:C:\Users\Administrator\Documents\SQL Server Management Studio\Backup Files\Solution1
- vue单位文本控件与vue加密文本控件
vue单位文本控件: 使用方式: npm install dami-text-input --save 使用: <text-input v-model="test" :uni ...
- linux mkdir命令
1 mkdir,创建一个空目录. 比如:mkdir test 2 mkdir -p,递归创建目录. 比如:mkdir -p a/b.迭代创建. 3 mkdir -m 777 d 创建权限为777的目录 ...
- Linux三种网络连接模式
https://www.cnblogs.com/linjiaxin/p/6476480.html 三种模式的区别:https://www.cnblogs.com/itxiaok/p/10358055. ...
- 百度AI开放平台 情感倾向分析实例以及gbk编码解决
f=open('test.txt','a+',encoding='utf-8') for index,row in cxzg.iterrows(): text=str(row['text']) tex ...
- MySQL常用的七种表类型(转)
MySQL常用的七种表类型(转) 其实MySQL提供的表类型截至到今天已经有13种,各有各的好处,但是民间流传的常用的应该是7种,如果再细化出来,基本上就只有两种:InnoDB.MyIASM两种. ...
- docker 安装redis , 让宿主机可以访问
1, docker 拉去最新版本的redis docker pull redis #后面可以带上tag号, 默认拉取最新版本 2, docker安装redis container 安装之前去定义我们的 ...
- 基于Protostuff实现的Netty编解码器
在设计netty的编解码器过程中,有许多组件可以选择,这里由于咱对Protostuff比较熟悉,所以就用这个组件了.由于数据要在网络上传输,所以在发送方需要将类对象转换成二进制,接收方接收到数据后,需 ...