我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-运维

Bash 初学者系列 6:bash 中的字符串操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Bash 初学者系列 6:bash 中的字符串操作

  今天我们就来介绍一下字符串操作函数,如何获取字符串长度、连接字符串、提取子字符串、替换子字符串等。

  我们在前面的文章中介绍过 ​​bash 中的变量​​​,了解到在 bash 中是没有比如字符串、整型等数据类型的,所有的都统称为变量。

  但是,这并不意味着在 bash 中没有字符串操作函数。今天我们就来介绍一下字符串操作函数,如何获取字符串长度、连接字符串、提取子字符串、替换子字符串等。

  获取字符串长度

  字符串其实是字符的序列(数组),我们先创建一个名为 distro 的字符串,内容初始化为 Ubuntu。

  复制

  1.  distro="Ubuntu"

  要获取字符串的长度,只需在变量名钱添加 # 即可,如下所示:​

  复制

  1.  $echo ${#distro}6

  上述代码中,echo 命令用于打印值,{#string} 给出字符串的长度。

  连接两个字符串

  可以将一个字符串拼接到另一个字符串的末尾,为了演示,我们首先创建两个字符串str1和str2,如下所示:​

  复制

  1.  str1="hand"str2="book"

  下面我们拼接这两个字符串,得到一个新字符串,赋值给变量 str3,如下所示:

  复制

  1.  str3=$str1$str2

  查找子字符串

  可以查找某个字符或者字符串在另一个字符串中的位置(索引)。我们首先创建一个名为 str 的字符串,如下所示:

  复制

  1.  str="Bash is Cool"

  我们可以使用 expr 命令来获取字符串 Cool 在 str 中的位置(索引):​

  复制

  1.  $"Cool"$"$str" "$word"9

  上述例子中,结果 9 就是单词 "Cool" 在 str 中的索引位置。

  提取子字符串

  我们可以从一个字符串中提取子字符串,比如获取其中的一个字符、一个或几个单词。

  我们首先创建一个名为 foss 的字符串变量:

  复制

  1.  foss="Fedora is a free operating system"

  假设我们要提取 foss 中的第一个单词 "Fedora",那么需要提供单词在字符串中的起始位置(索引)以及要提取的字符数。所以,我们需要提供的参数为:0 作为起始位置,提取 6 个字符,如下代码所示:​

  复制

  1.  $echo ${foss:0:6}Fedora

  注意,字符串中的第一个位置是零,就像​​bash中的数组​​​一样。也可以只指定子字符串的起始位置,而忽略字符数。在这种情况下,将提取从字符串的起始位置到结尾的所有内容。

  例如,从foss字符串中提取子字符串“free operating system”, 我们只需要指定起始位置12:​

  复制

  1.  $echo ${foss:12}free operating system

  字符串替换

  可以将某一字符串中的子字符串,替换为另一个字符串。比如,我们可以将上面例子中 foss 字符串中的 “Fedoras”替换为“Ubuntu”,如下所示:​

  复制

  1.  $echo ${foss/Fedora/Ubuntu}Ubuntu is a free operating system

  再比如,将子字符串“free”替换为“popular”:

  复制

  1.  $echo ${foss/free/popular}Fedora is a popular operating system

  上面例子中,我们使用 echo 命令打印结果,原始字符串是不会被改变的。

  删除子字符串

  也可以删除子字符串。为了演示,我们首先创建一个名为 fact 的字符串,如下所示:

  复制

  1.  fact="Sun is a big star"

  我们从 fact 字符串中删除字符串“big”:​

  复制

  1.  $echo ${fact/big}Sun is a star1

  另外一个例子,我们创建一个新字符串 cell:

  复制

  1.  cell="112-358-1321"

  假设我们这次的目的是要删除 cell 中所有的破折号;那下面的语句只会删除 cell 中的第一个破折号:

  复制

  1.  $echo ${cell/-}112358-1321

  要删除 cell 中所有的破折号,需要使用双斜杠,如下所示:

  复制

  1.  $echo ${cell//-}1123581321

  这里需要注意,跟上面的例子一样,我们是使用 echo 命令打印的结果(结果也可以赋值给另外一个变量),因此原字符串(变量)cell 是没有被改变的。

  如果要修改原字符串,只需要将结果在分配回字符串即可:​

  复制

  1.  $echo $cell112-358-1321$${cell//-}$echo $cell1123581321

  大小写转换

  可以对字符串中的字母进行大小写转换。我们先创建两个字符串,分别命名为 legend 和 actor:​

  复制

  1.  legend="john nash"actor="JULIA ROBERTS"

  首先演示将 legend 中的字母全部转为大写:

  复制

  1.  $echo ${legend^^}JOHN NASH

  然后我们将 actor 中的字母转为小写:​

  复制

  1.  $echo ${actor,,}julia roberts

  或者将 legend 中的第一个字母转为大写:

  复制

  1.  $echo ${legend^}John nash

  或者,将 actor 中的第一个字母转为小写:

  复制

  1.  $echo ${actor,}jULIA ROBERTS

  此外,还可以将字符串中的某些字符改为大写或小写。比如,我们可以将 legend 中的字母 j 和 n 转为大写:​

  复制

  1.  $echo ${legend^^[jn]}JohN Nash

  来源: TIAP

  >>>>>>点击进入系统运维专题

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Bash 初学者系列 6:bash 中的字符串操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Bash 初学者系列 6:bash 中的字符串操作

今天我们就来介绍一下字符串操作函数,如何获取字符串长度、连接字符串、提取子字符串、替换子字符串等。
Bash 初学者系列 6:bash 中的字符串操作
Bash字符串2024-04-23

Bash 初学者系列 8:bash 中的循环

循环是 bash 脚本中一个很重要的功能,用途广泛。本篇文章我们介绍三种不同的循环,然后利用循环遍历数组。
Bash 初学者系列 8:bash 中的循环
Bash循环2024-04-23

Bash 初学者系列 7:bash 中的条件语句(if else)

今天我们介绍一下如何在 bash 中使用条件语句。
Bash 初学者系列 7:bash 中的条件语句(if else)

编程热搜

  • 人工智能你要知道的那些事
    编程学习网:早在1g时代我们只能接打电话。2g时代可以打电话发短信,玩早期的qq,但网络十分不稳定。3g时代带给我们很大的改变就是宽带上网,视频通话,看视频,听歌玩游戏。那时的人们认为4g无用,认为不会有什么改变,但当4g出来时我们才发现这是一次质的飞跃。
    人工智能你要知道的那些事
  • 人工智能无人机管制到底有多难?
    编程学习网:近日,一段“重庆网红列车遭无人机撞击逼停”的视频,在网络热传。
    人工智能无人机管制到底有多难?
  • 人工智能与人类
    欢迎各位阅读本篇,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本篇文章讲述了人工智能与人类,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    人工智能与人类
  • 两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
    公共集群的机器负载分布不均衡的问题,业务的查询和流量不可控等各种各样的问题,要节省机器资源就一定会面对这种各种各样的问题,除非土豪式做法,每个业务都拥有自己的机器资源,这里面有很多很多颇具技术挑战的事情。
    两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
  • 关于OpenStack的架构详细讲解
    欢迎各位阅读本篇文章,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。本篇文章讲述了关于OpenStack的架构详细讲解,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    关于OpenStack的架构详细讲解
  • AI &神经网络
    欢迎各位阅读本篇,本篇文章讲述了AI &神经网络,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。神经网络内容丰富,反映了当前国内外该领域的最新研究成果和动向,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    AI &神经网络
  • 人工智能对于网络安全的优缺点
    编程学习网:如今,产生的数据比以往任何时候都要多。由于数据分析工具的发展,各行各业的组织都更加重视大数据的收集和存储。
    人工智能对于网络安全的优缺点
  • Bash 初学者系列 7:bash 中的条件语句(if else)
    今天我们介绍一下如何在 bash 中使用条件语句。
    Bash 初学者系列 7:bash 中的条件语句(if else)
  • 人工智能机器学习的重要趋势是什么?
    编程学习网:在竞争日益激烈的技术市场中,从高科技初创公司到全球跨国公司都将人工智能视为关键竞争优势。但是,人工智能行业发展如此之快,以至于很难跟踪最新的研究突破和成就,甚至很难应用科学成果来实现业务成果。
    人工智能机器学习的重要趋势是什么?
  • 人工智能为什么会觉得Matplotlib用起来困难?
    编程学习网:Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。
    人工智能为什么会觉得Matplotlib用起来困难?

目录