python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...

d181125f0d518339cc63b48d8490bb41.png

Linux 的 bash shell 提供了多种形式的参数扩展表达式,可以获取变量自身的值,或者对变量值进行特定处理得到一个新的值,等等。
本篇文章对字符串变量值相关的参数扩展表达式进行汇总说明。

假设在 bash 中定义了 filepath=example/subdir/testfile.txt 这样一个变量,可以使用下面的参数扩展来获取一些值:

  • ${filepath}
    获取 filepath 变量的值。
    例如,echo ${filepath} 命令打印的结果是 example/subdir/testfile.txt。
  • ${#filepath}
    获取到 filepath 变量值的字符个数,也就是字符串长度。
    例如,echo ${#filepath} 命令打印的结果是 27。
  • ${filepath:4:3}
    从 filepath 变量值开头的第 4 个字符开始,往后获取三个字符,得到一个子字符串。
    例如,echo ${filepath:4:3} 命令打印的结果是 ple。
    注意是从开头的第 0 个字符开始数起。
    这个表达式的格式是 ${parameter:offset:length},offset 指定从哪个位置开始获取字符,length 指定获取多少个字符。
  • ${filepath: -3:3}
    从 filepath 变量值倒数的第 3 个字符开始,往后获取三个字符,得到一个子字符串。
    例如,echo ${filepath: -3:3} 命令打印的结果是 txt。
    负数的 offset 表示倒数的偏移值。冒号和负号之间要加空格。
    注意是从末尾的第 1 个字符开始往前数。
  • ${filepath#*/}
    在 filepath 变量值中,从头开始匹配所给的 */ 这个模式,删除第一个匹配的模式,返回后面剩余的内容。
    这里用 * 通配符来匹配开头的任意字符串。
    例如,echo ${filepath#*/} 打印的结果是 subdir/testfile.txt。
    这个表达式的格式是 ${parameter#word},从 parameter 变量值中删除最短匹配 word 的前缀部分。
  • ${filepath##*/}
    在 filepath 变量值中,从头开始匹配所给的 */ 这个模式,一直删除到最后一个匹配的模式,返回后面剩余的内容。
    这里用 * 通配符来匹配开头的任意字符串。
    例如,echo ${filepath##*/} 打印的结果是 testfile.txt。
    这个表达式的格式是 ${parameter##word},从 parameter 变量值中删除最长匹配 word 的前缀部分。
  • ${filepath%/*}
    在 filepath 变量值中,从末尾往前匹配所给的 /* 这个模式,删除第一个匹配的模式,返回前面剩余的内容。
    这里用 * 通配符来匹配末尾的任意字符串。
    例如,echo ${filepath%/*} 打印的结果是 example/subdir。
    这个表达式的格式是 ${parameter%word},从 parameter 变量值中删除最短匹配 word 的后缀部分。
  • ${filepath%%/*}
    在 filepath 变量值中,从末尾往前匹配所给的 /* 这个模式,一直删除到最后一个匹配的模式,返回前面剩余的内容。
    这里用 * 通配符来匹配末尾的任意字符串。
    例如,echo ${filepath%%/*} 打印的结果是 example。
    这个表达式的格式是 ${parameter%%word},从 parameter 变量值中删除最长匹配 word 的后缀部分。
  • ${filepath/[et]/M}
    在 filepath 变量值中,把第一个匹配的小写字母 e、或者小写字母 t,替换成大写字母 M。
    这里用 [et] 路径名扩展来匹配小写字母 e、或者小写字母 t。
    这个表达式的格式是 ${parameter/pattern/string},把匹配 pattern 的字符串替换成 string 字符串。
    只替换第一个匹配的模式字符串。这个模式字符串可以位于变量值的开头、中间、以及末尾部分。
    例如,echo ${filepath/[et]/M} 打印的结果是 Mxample/subdir/testfile.txt。
  • ${filepath//[et]/M}
    在 filepath 变量值中,把所有匹配的小写字母 e、或者小写字母 t,替换成大写字母 M。
    这里用 [et] 扩展来匹配小写字母 e、或者小写字母 t。
    让 pattern 模式字符串以字符 ‘/’ 开头,表示替换所有匹配的字符串。
    例如,echo ${filepath//[et]/M} 打印的结果是 MxamplM/subdir/MMsMfilM.MxM。
  • ${filepath/subdir}
    在 filepath 变量值中,删除匹配的 subdir 字符串。
    例如,echo ${filepath/subdir} 打印的结果是 example//testfile.txt。
    这个表达式没有提供替换之后的字符串,表示删除所匹配的字符串。${parameter#word} 只能删除匹配的前缀${parameter%word} 只能删除匹配的后缀
    ${parameter/pattern} 可以删除任意位置的匹配字符串,包括中间位置
  • ${filepath^^}
    把 filepath 变量值的所有字符都转换为大写。
    例如,echo ${filepath^^} 打印的结果是 EXAMPLE/SUBDIR/TESTFILE.TXT。
    这个表达式的格式是 ${parameter^^pattern},把 parameter 变量值中匹配 pattern 模式的每一个小写字母都转成大写。
    如果没有提供 pattern 模式,表示匹配任意一个字符。
  • ${filepath,,}
    把 filepath 变量值的所有字符都转换为小写。
    例如,echo ${filepath,,} 打印的结果是 example/subdir/testfile.txt。
    这个表达式的格式是 ${parameter,,pattern},把 parameter 变量值中匹配 pattern 模式的每一个大写字母都转成小写。
    如果没有提供 pattern 模式,表示匹配任意一个字符。
  • ${filepath^}
    把 filepath 变量值的首字符转成大写。
    例如,echo ${filepath^} 打印的结果是 Example/subdir/testfile.txt。
    这个表达式的格式是 ${parameter^pattern},把匹配 pattern 模式的 parameter 变量值首字符转成大写。
    如果没有提供 pattern 模式,表示匹配任意单个字符。
  • ${filepath,}
    把 filepath 变量值的首字符转成小写。
    例如,echo ${filepath,} 打印的结果是 example/subdir/testfile.txt。
    这个表达式的格式是 ${parameter,pattern},把匹配 pattern 模式的 parameter 变量值首字符转成小写。
    如果没有提供 pattern 模式,表示匹配任意单个字符。

上面内容汇总说明了多个字符串变量值相关的扩展表达式,方便统一收藏查阅。

关于这些扩展表达式的详细说明、以及更多的测试例子,可以查看我前面三篇以 “Bash技巧:使用参数扩展” 开头的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幸福手机,给爸妈的高端大气上档次的手机

打造高端老人手机——幸福手机 江苏智联天地科技有限公司历经2年,手机研发投入超过4000万,打造中国第一品牌的高端老人手机,手机将于2014年12月正式对外发布,是国内第一款高端老人手机——幸福手机(ThimFone&#xff0…

MASA Framework - EventBus设计

概述利用发布订阅模式来解耦不同架构层级,亦可用于解决隔离业务之间的交互优点:松耦合横切关注点可测试性事件驱动发布订阅模式发布者通过调度中心将消息发送给订阅者。调度中心解决发布与订阅者之间的关系,保证消息可以送达订阅者手中。发布…

wireshark-win64-3.4.0安装_这9类轴承的安装方法,你可都知道?有哪些需要注意的呢?...

轴承是当代机械设备中一种重要零部件。随着时间的推移,轴承会发生磨损,合理的安装和使用可以让机械设备减少不必要的安全隐患。前面文章讲了如何拆卸轴承,今天就给大家讲讲各类轴承应该如何安装!一、轴承安装前的准备工作轴承的安…

史上最牛数学简史

全世界只有3.14 % 的人关注了爆炸吧知识“中国现代数学之父”华罗庚曾说过宇宙之大,粒子之微火箭之速,化工之巧地球之变,生物之谜日用之繁,无处不用数学回首往昔数学始终伴随我们左右纵横交错的几何、繁琐复杂的运算难以求解的方程…

linux下使用pidcat找bug

第一步: 安装pidcat 第二步: 找到APP的包名比如adb shell ps | grep sangforadb shell pm list package第三步: 在ubuntu终端输入pidcat.py 包名结果:

创建与删除索引

索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此。本节中,将介绍索引的作用、特点,以及创建和删除索引的语法。13.4.1 使用索引优化查询索引是高速定位数据的技术,首先通过一个演示样例来了解其含义及作用&#xff0…

r vector 4 elements_Vector类与Enumeration接口

Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能。如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择。例:将键盘上输入的一个数字…

[深入JUnit] 测试运行的入口

阅读前提 了解JUnit 对JUnit的内部实现有兴趣 不妨看看[深入JUnit] Before, After, Test的秘密] 代码版本: junit 4.12代码搜索工具: http://grepcode.com/常用符号 _: 用来略去代码段中无关紧要的parameter ...: 用来略去无关紧要的代码实现 本文的展开方式&…

.NET6之MiniAPI(七):中间件

http协议,是由客户端发出请求,服务端响应结果并返回,我们把这个请求来回抽象成一个请求管道,那中间件就是这个管道上的阀门,控制着流量的进出和中断。每一个请求都要经过中间件的过滤,滤掉不合格的请求&…

linux之telnet命令使用

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序&…

arraylist从大到小排序_经典排序方法的python实现和复杂度分析

1.冒泡排序:冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步…

HOOK学习笔记与心得

一、 Hook介绍钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理wind…

access函数_ACCESS中的DLookUp函数是如何运算的?

​一、DLookUp函数介绍1. DLookUp函数的用途:可以用于从指定集合(一个域)中获取符合条件的特定字段的值。2. DLookUp函数的格式为:DLookUp( expr , domain , [criteria] )其中:expr 为字段名,或以字段名为基础的表达式字符串domai…

汇编语言之基础知识

1、机器语言 说到汇编语言的产生,首先要讲一下机器语言。机器语言是机器指令的集合。什么是机器指令?我们在使用CE时,常常见到。 请看下图: 图中所示的就是机器指令(或称机器码),这是十六进制的…

Entity Framework 简单增删改操作

前言 在 Entity Framework 简单查询操作 中主要是学习了在Entity Framework中的几种不同模式的查询操作,现在主要来学习一下简单的增加、删除、修改操作。 增加 在EF中添加操作一般有两种方式:一是直接创建对象,然后调用“DbSet”的”Add()”…

华为云服务器初探二(完结)

在上一篇《华为云服务器初探》 中介绍了在使用华为云服务器部署时的一些关键点,本篇继续,内容涉及如下:中间件的部署问题解决NAT 网关使用数据库服务的访问dotNET Core 程序的构建Redis首先更正上一篇中的一个错误,在运行参数中进行密码设置&…