shell——变量之字符串的截取

上篇文章讲到字符串的截取可以用字符位置索引的方式,即

从字符串第二个位置开始截取5个(索引值从0开始)

echo "${string:1:5}"

我们还可以使用#+*+字符%+字符+*的方式进行从左或从右的截取。

废话不多说,直接上例子。

#!/bin/bash
str="https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation"
echo "str       : ${str}"
echo "str#*/    : ${str#*/}"
echo "str##*/   : ${str##*/}"
echo "str%/*    : ${str%/*}"
echo "str%%/*   : ${str%%/*}"

输出

str     : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation
str#*/  : /mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation
str##*/ : creation
str%/*  : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog
str%%/* : https:

#*/ 就是从字符串左边开始删除到第一个/号结束,输出结果就是保留未删除右边字符。

##*/ 就是从字符串左边开始删除到最后一个/号结束,输出结果就是保留未删除右边字符。

%/* 就是从字符串右边开始删除到右起第一个/号结束,输出结果就是保留未删除左边字符。

%%/* 就是从字符串右边开始删除到右起最后一个/号结束,输出结果就是保留未删除左边字符。

#代表从左删除,%代表从右删除,这很好理解,最易混淆在其中作怪的就是*的位置

下面是*位置错误的例子,结果是无变化

#!/bin/bash
str="https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation"
#*位置用法错误,输出不生效
echo "str#/*    : ${str#/*}"
echo "str##/*   : ${str##/*}"
echo "str%*/    : ${str%*/}"
echo "str%%*/   : ${str%%*/}"

输出结果

str#/*  : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation
str##/* : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation
str%*/  : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation
str%%*/ : https://mp.csdn.net/mp_blog/creationhttps://mp.csdn.net/mp_blog/creation

我们可以看到#号出现时,*在截取位置字符的右边,不生效;%号出现时,*在截取位置字符的左边,不生效。

我们可以这样理解:*是截取时删除的内容,从左删除时,删除内容是符号的左边,所以*在字符左边,不可能说从左边第一个字符开始删除,删除的是右边的内容;

同理,从右删除时,删除的内容是从右第一个字符开始,不可能删除的是左边的内容。

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

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

相关文章

微信支付宝小程序生成二维码

一、生成微信小程序二维码 微信官网API文档 1.下载到本地 Overridepublic String getWxRemovalCode() {String appId "微信小程序AppID";String secret "微信小程序AppSecret";//获取凭证String token weiXinService.getAccessToken(appId, secret);Ma…

【CSS @property】CSS自定义属性说明与demo

CSS property property - CSS: Cascading Style Sheets | MDN At 规则 - CSS:层叠样式表 | MDN Custom properties (–*): CSS variables - CSS: Cascading Style Sheets | MDN CSS Houdini - Developer guides | MDN 📚 什么是property? property CSS…

Web ML 库的Transformers.js 提供文本转语音功能

JavaScript 库 Transformers.js 提供了类似 Python Transformers 库的功能,设计用于在 Web 浏览器中直接运行 Transformer 模型,而不再需要外部服务器参与处理。在最新的 2.7 版本中,Transformers.js 引入了增强功能,其中包括文本…

2023年度佳作:AIGC、AGI、GhatGPT 与人工智能大模型的创新与前景展望

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论…

day5 力扣合并区间--实际应用视频剪辑

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1: 输入:intervals [[1,3],…

System.Text.Json类库进行json转化时 ValueKind:Object 问题

文章目录 写在前面问题描述解决办法扩展 Datetime类型转换源码完整的配置 写在前面 以下方法中的所有转换器都属于刚刚能解决我的问题状态,实际使用过程中应该编写更加严谨的逻辑。 问题描述 webapi 当使用System.Text.Json类库进行json转化时,如果没…

LeetCode 2828. 判别首字母缩略词

【LetMeFly】2828.判别首字母缩略词 力扣题目链接:https://leetcode.cn/problems/check-if-a-string-is-an-acronym-of-words/ 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每…

MTK平台 BT从SW 如何分析 Pairing Fail 和 Abnormal Disconnection Issue

一 概要 本文旨在介绍当配对/回连失败(Pairing Fail) 以及 异常断线(Abnormal Disconnection) 类问题发生时,需要取得哪些必要的log、如何获取这些log,以及怎样对log进行简单的分析解读,协助定位问题点,过滤掉一些常见的因测试操作步骤、IOT device、测试环境等导致的误…

TCP 核心工作机制

TCP 的核心知识:如何保证传输可靠 如何提高传输效率 如何保证传输可靠:确认应答机制 超时重传机制 如何提高传输效率:滑动窗口机制、流量控制机制、延时应答机制、捎带确认机制、拥塞控制机制 可靠机制 TCP的可靠性主要是通过 确认应答 …

【轻量化篇】YOLOv8改进实战 | 更换主干网络 Backbone 之 RepGhostnet,重参数化实现硬件高效的Ghost模块

YOLOv8专栏导航:点击此处跳转 前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操…

[学习笔记]SQL Server中批量查找所有符合Where条件的记录

目标:在SQL Server中查找所有表的UserId 50的记录 创建一个表变量来存储所有包含’UserId’列的表的名称。然后使用一个游标遍历这些表,并对每个表执行一个动态SQL查询 DECLARE TableName nvarchar(256), ColumnName nvarchar(128), SearchStr2 nvarc…

CentOS 宣布停更3年后,服务器操作系统何去何从?

“CentOS 要停止更新了?” 盯着电脑,某大型企业数字化部门的负责人彭素素看到这个消息,不仅在心里发出了一声惊呼。 2020年,CentOS 停止更新的消息,不仅彭素素所在的企业,对于不少正在使用 CentOS 的厂商…

app设置为HomeLauncher后,如果进行adb install安装,界面会黑屏问题排查记录

一、开始以为是PMS的问题,但是读完PackageManagerService.java的安装流程后发现并不是这么回事。 其中比较重要的是freezePackageForInstall函数,app在替换原来的内容之前,会先冻住正在运行的app,然后发送kill命令到ActivityManagerService,在AMS中才会去kill掉app。而且…

Python多个列表连接实例代码解析

概要 在Python中,连接多个列表是一种常见的操作,用于将多个列表合并为一个。这个过程可以应用于各种数据处理和编程任务中。本文将介绍多种连接多个列表的方法,并提供详细的示例代码来帮助大家更好地理解。 使用 运算符 最简单的方法是使用…

【RTOS学习】源码分析(信号量和互斥量 事件组 任务通知)

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 目录 🍓信号量和互斥量🍅创建🍅Take🍅Give &#x…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -SpringMVC搭建框架

第一章 初识SpringMVC 1.1 SpringMVC概述 SpringMVC是Spring子框架 SpringMVC是Spring 为**【展现层|表示层|表述层|控制层】**提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的MVC 框架。 SpringMVC是非侵入式:可以使用注解让普通java对象&…

Windows: office: MS word: 吐槽:怎么分割一个word文档

最近打开3GPP24-229 这个文档,非常的慢。这个文档文件17M,有一千多页。想着看能不能分割一下分成几个小文件。 从网上找了很长时间,也没找到一个简单明了的合适方法。 其实这种需求非常的普通,但是看着微软没有意愿做这么个简单的…

JS模块化规范之CMD

JS模块化规范之CMD 模块化规范CMD(Common Module Definition)概念基本语法CMD实现 模块化规范 CMD(Common Module Definition) 概念 CommonJS module definition CMD规范专门用于浏览器端,模块的加载时异步的&#x…

Pytest fixture 的四种作用域:session、module、class 和 function

当使用 Pytest 测试框架时,fixture 可以具有不同的作用域,以控制其生命周期和共享范围。Pytest 支持四种不同的 fixture 作用域:session、module、class 和 function。 session 作用域(Session Scope): session 作用域是最宽泛的作…

简单的几个基础卷积操作

当构建卷积神经网络时,我们可以使用不同的卷积操作来提取图像特征。以下是一些常见的卷积操作,以及它们的 PyTorch 实现: 标准卷积层:通过 nn.Conv2d 实现标准的卷积操作。 conv_standard nn.Conv2d(in_channels3, out_channel…