shell中字符串操作【转】
转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html
我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,
当然shell编程也不例外咯,那么下面我们一起来看下shell中字符串
处理的相关操作吧。大概下面的字符串操作可以分为两种类型,一种
属于变量替换,另一种属于继承unix expr命令吧!
- 、测试字符串长度
- ${#string}
- expr length $string
- expr "$string" : '.*'
- 例:
- #!/bin/bash
- str="asfd"
- echo "${#str}"
- a=expr length $str
- echo "a=$a"
- a=
- a=`expr "$str" : '.*'`
- echo "a=$a"
- 、匹配字符串开头的子串长度
- expr match "$string" '$substring'
- $substring是一个正则表达式.
- expr "$string" : '$substring'
- $substring是一个正则表达式.
- 例:
- #!/bin/bash
- str=abcABC123ABCabc
- echo `expr match "$str" 'abc[A-Z]*.2'` #
- echo `expr "$str" : 'abc[A-Z]*.2'` #
- 、索引
- expr index $string $substring
- 在字符串$string中所匹配到的$substring第一次所出现的位置.
- 例:
- #!/bin/bash
- str=abcABC123ABCabc
- echo `expr index "$str" C` # C 字符的位置.
- echo `expr index "$str" c` #
- 、提取子串
- ${string:position}
- 在$string中从位置$position开始提取子串。
- 如果$string是"*"或者"@", 那么将会提取从位置$position开始的位置参数. []
- ${string:position:length}
- 在$string中从位置$position开始提取$length长度的子串.
- 例:
- #!/bin/bash
- str="abcABC123ABCabc"
- echo ${str:} #输出abcABC123ABCabc
- echo ${str:} #输出ABC123ABCabc
- echo ${str::} #输出123
- 、子串削除
- ${string#substring}
- 从$string的开头位置截掉最短匹配的$substring.
- ${string##substring}
- 从$string的开头位置截掉最长匹配的$substring.
- 例:
- #!/bin/bash
- str="abcABC123ABCabc"
- echo ${str#a*C} #输出123ABCabc
- echo ${str##a*C} #输出abc
- echo ${str##a*} #输出23ABCabc
- ${string%substring}
- 从$string的结尾位置截掉最短匹配的$substring.
- ${string%%substring}
- 从$string的结尾位置截掉最长匹配的$substring.
- 例:
- #!/bin/bash
- str=abcABC123ABCabc
- echo ${str%b*c} #输出 abcABC123ABCa
- echo ${str%%b*c} #输出 a
- 、子串替换
- ${string/substring/replacement}
- 使用$replacement来替换第一个匹配的$substring.
- ${string//substring/replacement}
- 使用$replacement来替换所有匹配的$substring.
- ${string/%substring/replacement}
- 如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.
- ${string/#substring/replacement}
- 如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.
- 例:
- #!/bin/bash
- str="abcABC123ABCabc"
- echo ${str/ABC/&&&} #输出 abc&&&123ABCabc
- echo ${str//ABC/&&&&} #输出 abc&&&&123&&&&abc
- echo ${str/%abc/&&&} #输出 abcABC123ABC&&&
- echo ${str/#abc/&&&} #输出 &&&ABC123ABCabc
shell中字符串操作【转】的更多相关文章
- Shell中字符串、数值的比较
原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较: -eq 等于 ...
- shell脚本—— 字符串操作(长度,查找,替换)
表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有 ...
- Python中字符串操作
#Python字符串操作 '''1.复制字符串''' #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' pri ...
- linux shell中读写操作mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- Python中字符串操作函数string.split('str1')和string.join(ls)
Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...
- python中字符串操作--截取,查找,替换
python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...
- 在shell 中字符串,文件,数字的比较
hadoop fs -test -e /path/exist ] ;then echo 'exist' else echo 'Error! path is not exist' fi 在shell中如 ...
- Shell中字符串的切割、拼接、比较、替换
[截取] 一.Linux shell 截取字符变量的前8位,有方法如下: expr substr “$a” 1 8 : 二.按指定的字符串截取 第一种方法: ${varible##*string} # ...
- R中字符串操作
简介 Stringr中包含3个主要的函数族 字符操作 空格处理 模式匹配 常用函数 在平常的数据分析工作中,经常要用到如下的函数 函数 操作 str_length() 获取字符串长度 str_sub( ...
随机推荐
- liunx服务器在本地可以访问但是外网访问不了
版权声明:本文为CSDN博主「tlytg456」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/tlytg/ar ...
- datatable 用法
DataTable datainsert = dt.GetChanges(DataRowState.Added); DataTable datadelete = dt.GetChanges(DataR ...
- SAS数据挖掘实战篇【五】
SAS数据挖掘实战篇[五] SAS--预测模型 6.1 测模型介绍 预测型(Prediction)是指由历史的和当前的数据产生的并能推测未来数据趋势的知识.这类知识可以被认为是以时 间为关键属性的关联 ...
- delphi中and和or的特殊用法
1=1 10=2 100=4 1000=8 1 or 2 = 3(11); 1 and 3 = 1; 2 and 3 = 2; 2 or 4 = 6(110); 2 and 6 = 2; 4 and ...
- windows修复失效图标
taskkill /im explorer.exe /fcd /d %userprofile%\appdata\localdel iconcache.db /astart explorer.exeex ...
- H3C 模拟器 防火墙开启Web功能
最近在搞运维的一些事情,由于缺少实体的机器来进行操作,先在模拟器里面进行 环境 windows 10,模拟器 HCL_V2.1.1 防火墙 1 在windows添加虚拟网卡 我的电脑--管理--设备管 ...
- [LeetCode] Top 100 Liked Questions
[LeetCode] Top 100 Liked Questions # Title Acceptance Difficulty 1 Two Sum 38.80% Easy 2 Add Two Num ...
- k8s 删除ns 卡住的解决办法
在某些情况下,在k8s中会无法删除某个namespace,它会一直卡在terminating状态下.解决这个问题的步骤为: kubectl api-resources --verbs=list --n ...
- XCTF (app1)
打开app.一个文本框,随便输入提示如下图. 打开JEB反编译. v2调用getPackageInfo获取版本信息.一般 Android 通过 PackageInfo 这个类来获取应用安装包信息,比如 ...
- caoz的梦呓:创业公司如何做好信息安全
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/gCWjzHBRfbPFhNeg2VtFhA https://mp.weixin.qq.com/s/bmifCmD2CHV1 ...