博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell中的字符串操作
阅读量:6202 次
发布时间:2019-06-21

本文共 2215 字,大约阅读时间需要 7 分钟。

SHELL字符串操作

bash Shell提供了多种字符串处理的命令:

  • awk命令
  • expr命令

字符串长度

  • ${#..}
  • expr length
  • awk的length(s)
    实例:
    string=”hello world”
    ${#string}
    expr length “$string”
    注意:双引號是必须的。由于字符串有空格

匹配子串

格式:expr match $string $substring

作用:在string的开头匹配substring,返回匹配到的长度,在string开头匹配不到substring则返回0,substring能够是正則表達式
string=”welcome to our world”

命令 返回值
expr match “$string” w.* 20
expr match “$string” ou.* 0

公共字符的索引

格式:expr index $string $sunstring

作用:在字符串string上匹配substring中字符第一次出现的字符
string=”welcome to our world”

命令 返回值
expr index “$string” our 5
expr index “$string” d 20
expr index “$string” s 0

执行发现。expr index的功能是寻找两个串之间的第一个公共字符

截取子串

  • 从左截取
    • ${string:position}
    • ${string:position:length}
  • 从右截取
    • ${string: -position}(冒号后面有一个空格)
    • ${string:(position)}
    • ${string: -position:length}
    • ${string:(position):length}

expr substr

格式:expr substr $string $position $length
与${}的差别:${}的position从0開始给string标号;expr sutstr的position从1開始给string标号
string=”welcome to our world”

命令 返回值
echo ${string:1:8} elcome t
expr substr “$string” 2 8 elcome t

正則表達式截取子串

使用正則表達式仅仅能抽取string开头处或结尾处的子串。
- expr match $string ‘\($substring\)’
- expr $string : ‘\($substring\)’

命令 返回值
expr match “$another” “[0-9]*” 8
expr match “$another” “\([0-9]*\)” 20091114
expr “$another” : “\([0-9]*\)” 20091114

注意:冒号两側有空格

删除子串

  • ${string#substring}
    删除string开头处与substring匹配的最短子串
  • ${string##substring}
    删除string开头处与substring匹配的最长子串
  • ${string%substring}
    删除string结尾处与substring匹配的最短子串
  • ${string%%substring}
  • 删除string结尾处与substring匹配的最长子串

substring并不是正則表達式

20091114 Reading Hadoop

命令 结果
echo “${another#2*1}” 114 Reading Hadoop
echo “${another##2*1}” 4 Reading Hadoop
echo “${another%a*p}” 20091114 Reading H
echo “${another%%a*p}” 20091114 Re

替换子串

  • ${string/substring/replacement}
    仅替换第一次与substring相匹配的子串
  • ${string//substring/replacement}
    替换全部与substring相匹配的子串
  • ${string/#substring/replacement}
    替换string开头处与substring相匹配的子串
  • ${string/%substring/replacement}
    替换string结尾处与substring相匹配的子串

string=”20001020year20050509month”

命令 结果
echo ${string/200/201} 20101020year20050509month
echo ${string/200/201} 20101020year20150509month
echo ${string/r*h/} 20001020yea
echo ${string/#2000/2010} 20101020year20050509month
echo ${string/%month/MONTH} 20001020year20050509MONTH

转载于:https://www.cnblogs.com/clnchanpin/p/7306268.html

你可能感兴趣的文章
Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1...
查看>>
干货 | 理解以太坊的第2层扩展方案
查看>>
虚拟货币测评之四——比特币现金(一)
查看>>
Apache的3种工作模式 (资源)
查看>>
[学习微服务-第3天] ServiceComb内置高性能网关服务
查看>>
谨慎的使用本地方法(54)
查看>>
hints
查看>>
C++中的函数指针
查看>>
再有人问你volatile是什么,就把这篇文章发给他
查看>>
一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
查看>>
在Linux CentOS7系统中安装开源CMS程序OpenCart
查看>>
阿里P7大牛细说架构——设计模式专栏
查看>>
Mybatis之拦截器--获取执行SQL实现多客户端数据同步
查看>>
JavaScript执行环境及作用域链实例分析
查看>>
在拥有比特币之前了解区块链钱包开发
查看>>
PHP $_GET 变量
查看>>
每日一练,Python爬取主要城市螺纹钢价格总汇
查看>>
python机器人:基于图灵的API开发,只需20行代码
查看>>
使用eclipse编译含有C++11特性的代码
查看>>
OSChina 周三乱弹 —— 国家命运与个人命运
查看>>