章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • python

  • shell

    • 进程pid判断脚本
    • 日志切割脚本
    • 设置跳板机脚本
    • 编写启动、停止、重启的脚本
    • mysql数据库备份的三种方式
    • jenkins编译服务脚本
    • app编译脚本
    • 常用shell脚本
    • 字符串的截取拼接
      • 1、# 号从左边开始,删除第一次匹配到条件的左边字符,保留右边字符
      • 2、## 号从左边开始,删除最后一次匹配到条件的左边字符,保留右边字符
      • 3、%号从右边开始,删除第一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)
      • 4、%% 号从右边开始,删除最后一次匹配到条件的右边内容,保留左边字符(不保留匹配条件)
      • 5、从左边第几个字符开始,及字符的个数
      • 6、从左边第几个字符开始,一直到结束
      • 7、从右边第几个字符开始,向右截取 length 个字符。
      • 8、从右边第几个字符开始,一直到结束
      • 9、截取字符串中的ip
      • 10、提取字符串中的数字
    • shell基础
    • centos7主机安全检测脚本和初始化脚本
    • 应用服务重启脚本
    • shell重启python程序脚本
    • rancher的证书制作脚本
    • shell常用脚本集合
    • mysql常用的脚本集合
    • shell批量部署安装包并启动
    • 批量添加定时任务
    • mysql备份企业示例
    • shell脚本创建出色用户体验的6种技巧
    • 多系统一键部署zabbix6脚本(已验证)
    • 批量拿取多台服务器的日志文件
    • shell脚本模块集合
  • go

  • 编程
  • shell
章工运维
2023-02-24
目录

字符串的截取拼接

一、字符串的截取

表达式 含义
${#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、# 号从左边开始,删除第一次匹配到条件的左边字符,保留右边字符

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"
b=${a#*/};echo $b
# 结果:openshift/origin-metrics-cassandra:v3.9
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"
b=${a##*/};echo $b
# 结果:origin-metrics-cassandra:v3.9
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a%/*};echo $b
# 结果:docker.io/openshift
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a%%/*};echo $b
# 结果:docker.io
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0:5};echo $b
# 结果:docke
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:7};echo $b
# 结果:io/openshift/origin-metrics-cassandra:v3.9
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0-8:5};echo $b
# 结果:dra:v
1
2
3

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

# 样本: a="docker.io/openshift/origin-metrics-cassandra:v3.9"   
b=${a:0-8};echo $b
# 结果:dra:v3.9
1
2
3

# 9、截取字符串中的ip

# 样本: 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
1
2
3
4
5
6
7

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

echo "test-v1.1.0" | tr -cd '[0-9.]'    # 输出1.1.0
aa="test-v1.1.0" | echo ${aa//[!0-9.]/} # 输出1.1.0
1
2
微信 支付宝
上次更新: 2023/02/24, 20:47:23

← 常用shell脚本 shell基础→

最近更新
01
shell脚本模块集合
05-13
02
生活小技巧(认知版)
04-29
03
生活小技巧(防骗版)
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式