前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串的截取拼接

字符串的截取拼接

作者头像
章工运维
发布2023-05-19 17:53:39
4930
发布2023-05-19 17:53:39
举报
文章被收录于专栏:章工运维

一、字符串的截取

表达式

含义

${#string}

$string的字符个数

${string:position}

在$string中, 从位置$position开始提取子串

${string:position:length}

在$string中, 从位置position开始提取长度为length的子串

${string#substring}

从 变量$string的开头, 删除最短匹配$substring的子串

${string##substring}

从 变量$string的开头, 删除最长匹配$substring的子串

${string%substring}

从 变量$string的结尾, 删除最短匹配$substring的子串

${string%%substring}

从 变量$string的结尾, 删除最长匹配$substring的子串

${string/substring/replacement}

使用$replacement, 来代替第一个匹配的$substring

${string//substring/replacement}

使用$replacement, 代替所有匹配的$substring

${string/#substring/replacement}

如果$string的前缀匹配substring, 那么就用replacement来代替匹配到的$substring

${string/%substring/replacement}

如果$string的后缀匹配substring, 那么就用replacement来代替匹配到的$substring

expr match "$string" '$substring'

匹配$string开头的$substring* 的长度

expr "$string" : '$substring'

匹 配$string开头的$substring* 的长度

expr index "$string" $substring

在$string中匹配到的$substring的第一个字符出现的位置

expr substr $string $position $length

在$string中 从位置position开始提取长度为length的子串

expr match "$string" '\($substring\)'

从$string的 开头位置提取$substring*

expr "$string" : '\($substring\)'

从$string的 开头位置提取$substring*

expr match "$string" '.*\($substring\)'

从$string的 结尾提取$substring*

expr "$string" : '.*\($substring\)'

从$string的 结尾提取$substring*

# 1、# 号从左边开始,删除第一次匹配到条件的左边字符,保留右边字符

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"
b=${a#*/};echo $b
# 结果:openshift/origin-metrics-cassandra:v3.9

# 2、## 号从左边开始,删除最后一次匹配到条件的左边字符,保留右边字符

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"
b=${a##*/};echo $b
# 结果:origin-metrics-cassandra:v3.9

# 3、%号从右边开始,删除第一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a%/*};echo $b
# 结果:docker.io/openshift

# 4、%% 号从右边开始,删除最后一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a%%/*};echo $b
# 结果:docker.io

# 5、从左边第几个字符开始,及字符的个数

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0:5};echo $b
# 结果:docke

# 6、从左边第几个字符开始,一直到结束

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:7};echo $b
# 结果:io/openshift/origin-metrics-cassandra:v3.9

# 7、从右边第几个字符开始,向右截取 length 个字符。

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0-8:5};echo $b
# 结果:dra:v

# 8、从右边第几个字符开始,一直到结束

代码语言:javascript
复制
# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0-8};echo $b
# 结果:dra:v3.9

# 9、截取字符串中的ip

代码语言:javascript
复制
# 样本: a="当前 IP:123.456.789.172  来自于:中国 上海 上海  联通"
b=${a//[!0-9.]/};echo $b

或者
echo $a | grep -o -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]*"

# 结果:123.456.789.172

# 10、提取字符串中的数字

代码语言:javascript
复制
echo "test-v1.1.0" | tr -cd '[0-9.]'    # 输出1.1.0
aa="test-v1.1.0" | echo ${aa//[!0-9.]/} # 输出1.1.0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 1、# 号从左边开始,删除第一次匹配到条件的左边字符,保留右边字符
  • # 2、## 号从左边开始,删除最后一次匹配到条件的左边字符,保留右边字符
  • # 3、%号从右边开始,删除第一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)
  • # 4、%% 号从右边开始,删除最后一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)
  • # 5、从左边第几个字符开始,及字符的个数
  • # 6、从左边第几个字符开始,一直到结束
  • # 7、从右边第几个字符开始,向右截取 length 个字符。
  • # 8、从右边第几个字符开始,一直到结束
  • # 9、截取字符串中的ip
  • # 10、提取字符串中的数字
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档