要提取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. USB协议详解第6讲(USB描述符-端点描述符)

    1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符.报告描述符和物理描述符.今天主要是学习USB端点描述符的组成. 2.端点描述 ...

  2. 使用hexo进行github博客搭建

    1.你必须建一个存储库,这个存储库要和你的github名称一致(不然就会404),如下图: 2.如果是window配置,需要安装git和node.js 3.下载hexo npm config set ...

  3. 正态分布——“牛而B之”

    1 问题: 什么是正态分布,为什么这么出名和重要? 1.1 名气大 为什么叫"正态分布",也有地方叫"常态分布",这两个名字都不太直观,但如果我们各取一字变为& ...

  4. NOIP2024模拟赛13:拆开未来

    NOIP2024模拟赛13:拆开未来 写在前面:进制哈希的P不要用998244353会被卡!用131.注意取模为负数的情况! C-重复 一句话题意:给定字符串 \(S\), 问 \(S\) 的所有子串 ...

  5. 【转载】 TensorFlow中CNN的两种padding方式“SAME”和“VALID”

    原文地址: http://blog.csdn.net/wuzqchom/article/details/74785643 --------------------------------------- ...

  6. MFC应用当中,修改tab顺序

    打开资源文件,按"Ctrl+D"组合键,可以查看控件的Tab顺序,使用鼠标顺序点击即可改变Tab顺序,此方法在Visual Studio 2022版本有效,其余版本没有测试过.

  7. .NET操作Excel高效低内存的开源框架 - MiniExcel

    .Net平台上对Excel进行操作主要有两种方式.第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作:第二种,调用Excel的COM组件.两种方式各有特点. 今天给大家介绍第三 ...

  8. 只有ip地址没有域名怎么申请https证书

    ​只有IP地址没有域名,如何申请HTTPS证书? 在日常生活中,我们通常会为网站的域名申请HTTPS证书,以保护用户的数据安全.然而,有时候你可能需要为一个只有IP地址的服务或设备申请HTTPS证书. ...

  9. VUE 前端读取excel表格内容

    <el-upload class="upload-demo" :action="''" :show-file-list="false" ...

  10. elementUI中的级联选择器,默认赋值不起作用

    今天遇到再使用element的级联选择器功能的时候,是多选,默认赋值不起作用. 后来查到是因为少了multiple属性,但是multiple属性要放在props绑定的对象中,而不是直接放在标签上 &l ...