bash中的字符串处理操作

Bash语言的字符串处理 在Bash中,字符串可以用单引号(')或双引号(")来定义。单引号中的内容会被原样处理,而双引号中的内容则支持变量替换和命令替换。```bash可以使用括号定义数组,并可以直接通过索引访问元素。bashecho ${fruits[1]} # 输出: bananaBash提供了丰富的字符串处理功能,涵盖了字符串的基本操作、比较、模式匹配、数组操作及文件操作等。在实际的开发中,熟悉这些操作能够大幅提高我们处理文本数据的效率。 阅读详情

本文首发于我的Github博客
本文记录了作者使用bash过程中,为了解决去除前缀后缀的问题而了解到的bash的字符串操作,简单来说

  1. string:position或者string:position:length进行子串提取
  2. string#pattern进行最短匹配前缀去除,string##pattern进行最长匹配前缀去除
  3. string%pattern进行最短匹配后缀去除,string%%pattern进行最长匹配后缀去除
  4. string/pattern/string进行首个pattern替换,string//pattern/string进行全部pattern替换
  5. 以上的pattern指的都是wildcard而不是regular expression

场景

有时在使用bash脚本的时候,希望对字符串做一些基本的操作,比如说去除前缀后缀(去除文件扩展名,统一前缀编号等),事实上,bash原生支持了许多字符串操作

bash 中的字符串操作

下面所有的pattern指的都是bash wildcard而不是regular expression

子串提取

使用string:position提取从position开始的子串

> string="text, dummy, text, dummy"
> echo ${string:3}
t, dummy, text, dummy

使用string:position:length提取从position开始,长度为length的子串

> string="text, dummy, text, dummy"
> echo ${string:3:4}
t, d

前缀去除

使用string#pattern进行最短匹配前缀去除

> string="text, dummy, text, dummy"
> echo ${string#*text}
, dummy, text, dummy

使用string##pattern进行最长匹配前缀去除

> string="text, dummy, text, dummy"
> echo ${string##*text}
, dummy

后缀去除

使用string%pattern进行最短匹配后缀去除

> string="text, dummy, text, dummy"
> echo ${string%dummy*}
text, dummy, text, y

使用string%%pattern进行最长匹配后缀去除

> string="text, dummy, text, dummy"
> echo ${string%%dummy*}
text, 

字符串替换

使用string/pattern/string进行首个pattern的替换

> string="text, dummy, text, dummy"
> echo ${string/text/TEXT}
TEXT, dummy, text, dummy

使用string//pattern/string进行全部pattern的替换

> string="text, dummy, text, dummy"
> echo ${string//text/TEXT}
TEXT, dummy, TEXT, dummy

想要得到对正则表达式匹配替换的支持的话,可以使用sed命令

python实现ECMS算法 ECMS(Equivalent Consumption Minimization Strategy)算法是一种用于混合动力汽车能量管理系统的优化策略。它通过计算等效油耗来平衡电池电量消耗和燃油消耗,从而优化整体能耗。以下是一个简单的Python实现,用于演示ECMS算法的基本思想。这个实现假设了一个简单的混合动力汽车模型,其中电池电量和燃油消耗是主要的优化目标。 阅读详情

相关推荐

一文带你完成ARMv8架构中的cache知识点

【摘要】 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处理器内核要复杂得多,其时钟速度可以快上几个数量级。但是,外部总线和内存设备的频率并没有扩大到同样的程度。有可能实现小块的片上SRAM,它可以以与内核相同的速度运行,但是与标准的DRAM块相比,这种RAM非常昂贵,因为后者的容量可以达到数千倍。在许多基于ARM处理器的系统中,访问外部存储器需要几十甚至几百个内核周期。 cache的技术背景 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处.

ABCCloud的博客 1853

STGCN实战:从零构建PyTorch时空图卷积网络预测城市交通流

本文详细介绍了如何使用PyTorch从零构建时空图卷积网络(STGCN)进行城市交通流预测。通过将交通网络建模为图结构,并融合时间卷积与空间图卷积,STGCN能有效捕捉交通流的时空依赖性。文章提供了从数据预处理、核心模块(TimeBlock与STGCNBlock)搭建、模型训练到实战技巧的完整指南,帮助开发者快速掌握这一前沿的交通速度预测技术。

wasm7browser的博客 247

Linux笔记14-Bash字符串处理

root@localhost ~]# cut [选项] 文件名选项:-f 列号: 提取第几列-d 分隔符: 按照指定分隔符分割列说明:一般情况下,cut命令都会和管道符 grep 一起使用。

码农兴哥的技术笔记 1231

Linux -- 图形界面配置Samba;system-config-samba工具

图形界面配置Samba6.6.1 system-config-sambasystem-config-samba是Red Hat公司专门为Samba服务器管理编写的图形界面的管理工具,通过system-config-samba几乎可以完成对Samba服务器的所有配置,所以在只希望通过Samba服务器实现一些简单的资源共享时,system-config-samba是一个不错的选...

weixin_33695450的博客 2200

STM32 FOC电机控制:手把手教你用CubeMX配置TIM1中心对齐PWM(含代码避坑)

本文详细解析了STM32 FOC电机控制中TIM1中心对齐PWM的配置方法,涵盖CubeMX图形化设置、HAL库代码调用及常见问题排查。特别针对L6230Q驱动芯片的使能逻辑和死区时间配置提供实用指南,帮助开发者高效实现无刷电机的高性能控制。

weixin_27027459的博客 442

bash-字符串处理

bash中字符串处理: 1、利用echo命令进行变量中字符串替换 如下:

timewh的专栏 476

2025华为od面试手撕代码【求字符串表达式结果】

2025华为od面试手撕代码【求字符串表达式结果】

MISAYAONE的博客 1351

bash中的字符串处理

bash的变量中存放的字符串的处理方式: bash变量: 弱变量: 1.无需事先定义即可应用; 2.变量没有数据类型的硬性要求,默认是字符型; 1.字符串切片: ${#VAR}:返回字符类型变量的变量值的长度; ${#VAR:offset}:返回字符型变量中第"offset"之后的内容,不包括"offset"这个位置的字符;offset取值范围:0-$[${#V...

weixin_33722405的博客 1220

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

w0shishabi的博客 1777

Qt Android MySql 数据库驱动编译(详细图解步骤)

第一步.先介绍下环境搭建: Qt 版本 5.12.11 下载链接 https://download.qt.io/archive/qt/5.12/5.12.11/qt-opensource-linux-x64-5.12.11.run Ubuntu 18.04.6 LTS 下载链接 JDK版本 1.8.0_191 下载链接https://www.oracle.com/java/technologies/downloads/ Android Studio版本 ...

h a 6 6 6 c k 为 你解决复杂难题! 3380

BASH shell脚本篇3——字符串处理

这篇博客主要是记录bash shell的字符串处理方法,便于日后复习。

W1Z1Q的专栏 1785

图解B+树的插入过程

B+ 树在现代数据库中很常见,如果我们了解它,在工作中可能对性能优化会有更好的帮助! 最近我一直在思考 B+ 树的高度是由什么决定的。知道我了解了 B+ 树的插入过程,才有一种恍然大悟的感觉! 网上的一些资料杂乱无章,不同的数据库可能还有对 B+ 树有不同的实现。但是万变不离其宗,B+ 树的定义,大致如下所示: 总结一下,B+ 树有下面 5 个重要的特点。 B+ 树包含 2 种类型的结点: 内部结点(也称索引结点)和叶子结点。 根结点本身即可以是内部结点,也可以是叶子结点。 根结点的关键字个数最

愿君出走半生,归来时仍是少年 2134

Bash支持的一系列数字和字符串处理操作

Bash支持一系列令人吃惊的数字和字符串处理。不幸的是这些工具缺乏统一的焦点/目的, 它们有些是参数替换(parameter substitution)的子集,其他的属于UNIX命令expr的功能。 这种情况导致了命令语法的不一致/统一和 功能的重复实现,别提有多混乱了!   字符串长度(String Length) ${#string} expr length $string ex

wind_rabbit的专栏 911

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Bash中的字符串处理

Bash中的字符串处理 字符串切片 //示例 [root@node1 ~]# DOMAIN=www.baidu.com [root@node1 ~]# echo $DOMAIN www.baidu.com ${var#*bai},自左而右,查找var变量中存储的字符串中第一次出现的由bai所指明的字符,删除此字符及其左侧的所有内容 [root@node1 ~]# echo ${DOMAIN#*bai} du.com ${var##*ba},自左而右,查找var变量中存储的字符串中最后一次出现的由

天冷吃个橘子的博客 580

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux Bash编程:字符串处理

在Linux Bash编程中,介绍了Bash编程基本语法,本文记录一下Bash编程中使用到的相关shell 语法技巧。 目录字符串处理在字符串中传递变量tr命令1. 大小写转换2. 替换3. 压缩重复字符串4. 删除指定字符判断字符串是否包含某个子串数组操作冒泡排序字体颜色文本处理文件操作清空文件内容 字符串处理 在字符串中传递变量 $ num=8 # 方法1:双引号 $ text="There are $num ducks swimming in a pond" $ echo $text There ar

测试开发小记 596

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Bash Infinity函数式编程技巧:操作链与管道处理的艺术

在Bash脚本开发中,函数式编程范式能够显著提升代码的可读性和可维护性。Bash Infinity框架通过强大的操作链和管道处理机制,为开发者提供了现代化的函数式编程体验。 ## 什么是Bash Infinity框架? Bash Infinity是一个现代化的Bash标准库和框架,它为原生Bash脚本注入了面向对象编程和函数式编程的能力。通过这个框架,你可以像使用现代编程语言一样编写优雅、可重

gitblog_00132的博客 415

bash对字符串的处理

Bash对字符串的处理 变量定义 在bash中,直接定义 # strs='x1x12y2y1x1x' 在awk中,定义 两种方法,第一种,直接定义 # awk 'BEGIN{strs="x1x12y2y1x1x"}' /dev/null 第二种,使用-v参数 # awk -v strs=$strs 在python中,直接定义 >>> s...

weixin_34221332的博客 176

Bash Infinity类型系统终极教程:字符串、数组、映射操作全解析

Bash Infinity是一个现代化的Bash标准库和框架,为Bash脚本开发提供了强大的类型系统支持,包括字符串、数组、映射等常见数据类型的操作方法。本教程将带你全面了解Bash Infinity类型系统的核心功能,掌握高效处理各类数据的实用技巧。 ## 为什么选择Bash Infinity类型系统? 在传统Bash编程中,处理复杂数据类型往往需要编写大量重复代码,且容易出错。Bash I

gitblog_00301的博客 336

BASH字符串处理:字符串分割为数组

http://codingstandards.iteye.com/blog/1164910 Bash字符串处理(与Java对照) - 25.字符串分割(成数组) In Java String.split  String[]     split(String regex)           根据给定的正则表达式的匹配来拆分此字符串。  String[]

zouyongjin的专栏 7763

【Linux系列】字符串操作的艺术:删除前缀的 Shell 脚本技巧

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1万+
上一篇: JavaScript中箭头函数与普通函数
下一篇: defer+recover保护gin不panic
FitzLeopard
博客等级 码龄9年 6粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值