Shell_Shell 脚本中字符串的相关操作
在我们的shell 编程中,一个必不可少的操作就是针对于字符串的操作,
重要有字符串替换,计算字符串长度 等等。。。
原文地址:
https://blog.csdn.net/github_33736971/article/details/53980123
下面对这些操作进行一个总结。
${#string}
返回$string的长度
${string:position}
在$string中,从$position位置之后开始提取子串
${string:position:length}
在$string中,从$position位置之后开始提取$length长度的子串
[root@localhost SHELL]# NAME="ni hao, ming tian"
[root@localhost SHELL]# echo $NAME
ni hao, ming tian
[root@localhost SHELL]# echo ${NAME}
ni hao, ming tian
[root@localhost SHELL]# echo ${#NAME}
17
[root@localhost SHELL]# echo ${NAME:3}
hao, ming tian
[root@localhost SHELL]# echo ${NAME:3:6}
hao, m
[root@localhost SHELL]#
${string#substring}
从变量$string开头开始删除最短匹配$substring子串
${string##substring}
从变量$string开头开始删除最长匹配$sunstring子串
[root@localhost SHELL]# NAME=abcABC123ABCabcde
[root@localhost SHELL]# echo $NAME
abcABC123ABCabcde
[root@localhost SHELL]# echo ${NAME#a*C}
123ABCabcde
[root@localhost SHELL]# echo ${NAME##a*C}
abcde
[root@localhost SHELL]#
${string%substring}
从变量$string结尾开始删除最短匹配$substring子串
${string%%substring}
从变量$string结尾开始删除最长匹配$substring子串
[root@localhost SHELL]# NAME=abcABC123ABCabc
[root@localhost SHELL]# echo $NAME
abcABC123ABCabc
[root@localhost SHELL]# echo ${NAME%%a*c}
[root@localhost SHELL]# echo ${NAME%a*c}
abcABC123ABC
[root@localhost SHELL]# echo ${NAME#b*c}
abcABC123ABCabc
[root@localhost SHELL]# echo ${NAME#bc}
abcABC123ABCabc
[root@localhost SHELL]# echo ${NAME%bc}
abcABC123ABCa
[root@localhost SHELL]# echo ${NAME%%bc}
abcABC123ABCa
[root@localhost SHELL]# echo ${NAME%C*c}
abcABC123AB
[root@localhost SHELL]# echo ${NAME%%C*c}
abcAB
[root@localhost SHELL]# echo ${NAME%%C*b}
abcABC123ABCabc
[root@localhost SHELL]# echo ${NAME}
abcABC123ABCabc
[root@localhost SHELL]#
注意:在进行#或##匹配时,$string的首字符必须是被删除子串$substring的第一个字符,不然无法匹配删除;
在进行%或者%%匹配时,$string的最后一个字符必须是被删除子串$substring的最后一个字符,不然无法进行删除操作;
${parameter/parttern/string}
用string来替换第一个匹配的pattern
${parameter/#parttern/string}
从开头匹配parameter变量中的pattern,匹配上后就用string来替换匹配的pattern
${parameter/%pattern/string}
从结尾开始匹配parameter变量中的pattern,匹配上后就用string替换匹配的pattern
${parameter//pattern/string}
用string来替换parameter变量中所有匹配的pattern
[root@localhost SHELL]# NAME="I am a student student"
[root@localhost SHELL]# echo ${NAME//student/teacher}
I am a teacher teacher
[root@localhost SHELL]# echo ${NAME/#student/teacher}
I am a student student
[root@localhost SHELL]# echo ${NAME/%student/teacher}
I am a student teacher
[root@localhost SHELL]# echo ${NAME/%I am /teacher}
I am a student student
[root@localhost SHELL]# echo ${NAME/#I am /teacher}
teachera student student
[root@localhost SHELL]# echo ${NAME/#I am a/teacher}
teacher student student
[root@localhost SHELL]# echo $NAME
I am a student student
[root@localhost SHELL]#
Shell_Shell 脚本中字符串的相关操作的更多相关文章
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
简介 昨天在通过shell脚本实现一个功能的时候,由于对shell处理字符串的方法有些不熟悉导致花了不少时间也犯了很多错误,因此将昨日的一些错误记录下来,避免以后再犯. 字符串的定义与赋值 # 定义S ...
- JS中字符串的相关操作
一.字符串的创建 创建一个字符串有几种方法.最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量. var myStr = "Hello, String!"; 可以用双 ...
- Python字符串的相关操作
1.大小写转换 判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字 ...
- day7.关于字符串的相关操作
一.字符串的相关操作 """ (1)字符串的拼接 (2)字符串的重复 (3)字符串跨行拼接 (4)字符串的索引 (5)字符串的切片: 语法 => 字符串[::] 完 ...
- Shell脚本中执行sql语句操作mysql的5种方法【转】
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- Shell脚本中字符串判空:使用-z 字符串长度为0时,为真,-n字符串长度不为0,为真。这两个都不靠谱【转】
最近发现使用 -z 和 -n 来判断字符串判空,或不空时,很不靠谱. 使用下面的方法最可靠: if [ "x${value}" == "x" ] ...
- Python中的字符串及其相关操作
1.表示: 字符串可以用单引号或者双引号括起来,两者效果是完全一样的. 针对较长的字符串,也可以用三个引号括起来,即"""..."""或者' ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- 路径打印(set以及字符串的相关操作)
题目链接 题目描述 给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右缩一格,就像这样: a b ...
- Java 常用知识点汇总(数据类型之间转换、字符串的相关操作-截取、转换大小写等)
1.Java四类八种数据类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围- ...
随机推荐
- 数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊
本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的环境搭建.故障处理等日常实践操作,以及概念梳理.常用脚本等总结记录,分享 ...
- 07 - react 唯一修改state状态的方式 setState
// setState 修改状态 如果是直接修改页面不会改变 使用 setState 修改数据 才会驱动视图的改变 // setState 的原理:修改玩状态之后会调用 render 函数 impor ...
- JDBC后端实现登录的逻辑
// 包名 package com.zhulx.JDBC; // 导入实例类 import com.zhulx.pojo.Account; import java.sql.Connection; im ...
- vue3 + vite 分析报告 report == rollup-plugin-visualizer
安装插件 npm i rollup-plugin-visualizer -D 配置vite.config.js 文件 [加入插件] import { defineConfig } from 'vite ...
- CSS动画(毛玻璃按钮)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4ofJ9W4ibgD5asQcBesp1f1CXVnrQmicnzqDPskBNEQC4ia0 ...
- Go语言学习 _基础02 _条件表达式、分支、循环
Go语言学习 _基础02 _条件表达式.分支.循环 条件表达式和switch package condition import "testing" func TestCondict ...
- SQL Server 安装图解
此安装步骤适用于首次安装 一.SQL Server 安装 1.双击SQL Server 光盘映像文件,会出现如图所示界面 选择如下图所示的选项 2.输入产品密钥(这里演示密钥进行) 3.配置更新项,检 ...
- 历史性突破:独立开发 .net core 在线客服系统累计处理聊天消息 48 万余条!
业余时间用 .net core 写了一个在线客服系统.我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免费和分享. 后来我索性就发了一个100%私有化版直接 ...
- 使用wxpython开发跨平台桌面应用,实现程序托盘图标和界面最小化及恢复处理
在前面随笔<基于wxpython的跨平台桌面应用系统开发>介绍了一些关于wxpython开发跨平台桌面应用的总体效果,开发桌面应用,会有很多界面细节需要逐一处理,本篇随笔继续深入该主题,对 ...
- 每日学学Java开发规范,代码格式(附阿里巴巴Java开发手册(终极版))
前言 每次去不同的公司,码不同的代码,适应不同的规范,经常被老大教育规范问题,我都有点走火入魔的感觉,还是要去看看阿里巴巴Java开发规范,从中熟悉一下,纠正自己,码出高效,码出质量. 想细看的可以去 ...