要提取startup/后面的字符,可以使用cut命令或awk命令。以下是两种方法:

使用cut命令:

bash
#!/bin/bash

# 给定的字符串
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用cut命令提取startup/后面的字符
EXTRACTED1=$(echo "$STR1" | cut -d'/' -f2-)
EXTRACTED2=$(echo "$STR2" | cut -d'/' -f2-) # 输出结果
echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

使用awk命令:

bash
#!/bin/bash

# 给定的字符串
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用awk命令提取startup/后面的字符
EXTRACTED1=$(echo "$STR1" | awk -F'startup/' '{print $2}')
EXTRACTED2=$(echo "$STR2" | awk -F'startup/' '{print $2}') # 输出结果
echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

解释:

  • cut -d'/' -f2-:使用/作为分隔符,并提取从第二段到最后的所有段。
  • awk -F'startup/' '{print $2}':使用startup/作为字段分隔符,并打印第二个字段。

这两种方法都可以有效地提取startup/后面的字符。选择哪种方法取决于你的具体需求和个人喜好。

 

不一定要使用 echo 才能用 awk 对变量进行截取。在 Bash 脚本中,你可以直接将变量的内容传递给 awk 命令进行处理,而不需要显式地使用 echo。这可以通过将变量作为字符串直接传递给 awk 来实现。以下是一个示例:

bash
#!/bin/bash

# 给定的字符串
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用awk命令直接对变量内容进行处理
EXTRACTED1=$(awk -F'startup/' '{print $2}' <<< "$STR1")
EXTRACTED2=$(awk -F'startup/' '{print $2}' <<< "$STR2") # 输出结果
echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

在这个示例中,<<< "$STR1" 是一个 here-string,它将 STR1 变量的内容作为输入传递给 awk 命令。这种方法避免了使用 echo,并且代码更加简洁。

这种方法同样适用于 STR2 变量,如示例所示。使用 here-string 是一种在命令行或脚本中传递单行输入的简洁方式。

当然,除了使用 awkcut,还有其他几种方法可以在 Shell 中提取 startup/ 后面的字符。以下是一些替代方法:

使用参数扩展

bash
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用参数扩展去除前缀
EXTRACTED1="${STR1#*/}"
EXTRACTED2="${STR2#*/}" echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

使用 sed

bash
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用sed命令去除前缀
EXTRACTED1=$(sed 's/^startup\///' <<< "$STR1")
EXTRACTED2=$(sed 's/^startup\///' <<< "$STR2") echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

使用 grep 和正则表达式

bash
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用grep和正则表达式提取匹配的部分
EXTRACTED1=$(grep -oP '(?<=startup/).+' <<< "$STR1")
EXTRACTED2=$(grep -oP '(?<=startup/).+' <<< "$STR2") echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

使用 bash 内置的正则表达式匹配

bash
STR1="startup/values.conf.template"
STR2="startup/v3.2.0-guangyi/values.conf.template" # 使用bash内置的正则表达式匹配
if [[ $STR1 =~ ^startup/(.+)$ ]]; then
EXTRACTED1="${BASH_REMATCH[1]}"
fi if [[ $STR2 =~ ^startup/(.+)$ ]]; then
EXTRACTED2="${BASH_REMATCH[1]}"
fi echo "提取的字符1: $EXTRACTED1"
echo "提取的字符2: $EXTRACTED2"

这些方法提供了不同的方式来处理字符串并提取所需的部分。你可以根据你的具体需求和个人喜好选择最适合的方法。

 
 

startup的更多相关文章

  1. 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter

    中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...

  2. 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup

    一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...

  3. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

  4. Tips for Planning Your Business Startup

    原文链接:http://domaintree.me/?p=1037 By Robert Thibodeau –  Starting a business can be a very daunting ...

  5. Asp.Net MVC<九>:OWIN,关于StartUp.cs

    https://msdn.microsoft.com/zh-cn/magazine/dn451439.aspx(Katana 项目入门) 一不小心写了个WEB服务器 快刀斩乱麻之 Katana OWI ...

  6. Startup配置类 居然又是约定

    Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...

  7. java.lang.ClassNotFoundException: org.apache.catalina.startup.VersionLoggerListener

    解决办法 找到Tomcat配置文件server.xml   apache-tomcat-7.0.57/conf 将<Listener className="org.apache.cat ...

  8. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  9. warnin php startup in unknown on line 0:

    PHP Warning:  PHP Startup:  in Unknown on line 0 这种情况是因为扩展路径有问题导致的路径或错,或没有该扩展但ini中开启了此扩展

  10. schematool -dbType mysql -initSchema hive startup failed...try this

    schematool -dbType mysql -initSchema hive startup failed

随机推荐

  1. js 时间日期

    Date.parse()  把字符串时间转化为时间戳. new Date(时间戳) 转化 时间格式 时间比较大小

  2. Web渗透09_文件包含漏洞

    1 文件包含漏洞描述 开发人员编写代码时独立性好是一个很重要的要求,这边一个数据库类,那边一个模型类.几百行的整体代码,在整合时两行行代码就可以包含进来使用.文件包含有助于独立的代码之间的配合!有时引 ...

  3. AOT漫谈专题(第七篇): 聊一聊给C#打造的节点依赖图

    一:背景 1. 讲故事 上一篇我们聊过AOT编程中可能会遇到的三大件问题,而这三大件问题又是考验你对AOT中节点图的理解,它是一切的原点,接下来我就画几张图以个人的角度来解读下吧,不一定对. 二:理解 ...

  4. Spring SPI、Solon SPI 有点儿像(Maven 与 Gradle)

    一.什么是 SPI SPI 全名 Service Provider interface,翻译过来就是"服务提供接口".基本效果是,申明一个接口,然后通过配置获取它的实现,进而实现动 ...

  5. 封装socket 到vue2.x 使用

    vue2.x 使用 socket 数据交互 简单封装 socket //生成唯一标识符 function getUuid { let s = []; let hexDigits = "012 ...

  6. .Net Core NPOI 导出多级表头

      想要导出这样的表格 数据准备格式 附上源码 1 using NPOI.HSSF.UserModel; 2 using NPOI.SS.UserModel; 3 using NPOI.SS.Util ...

  7. Maven简单介绍——必要的Java管理与构建

    概念 通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题. 虽然这些都是小 ...

  8. STM32F103RCT6搭配“ST_LINK V2 √RoHS 'A 2023 04'”在CubeIDE中下载程序到单片机

    一.请参考本站大佬文章进行接线: ST_LINK V2接口和连接方式 二.步骤: 到此,大功告成. 小手点赞,水逆退散!!!

  9. python库asyncio的概念和用法

    python 库 asyncio asyncio 是 Python 的标准库之一,用于编写异步应用程序.它提供了事件循环.协程.任务和其他工具来处理并发操作.以下是一些关于 asyncio 的基本概念 ...

  10. app&小程序&web安全—sign签名绕过

    零.前言 在web界面登陆时,小程序和app传输数据时经常会碰到签名,会对请求的参数进行签名,如果自己修改了数据包就会校验失败非常麻烦. 本文编写的契机就是因为碰到了一个JeecgBoot的小程序, ...