要提取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. Android 12 关机重启流程

    1. 关机流程 Android上层触发关机的入口很多,但最终几乎都是调用ShutdownThread.shutdown来实现.如下是一些常见的调用关机的点: StatusBarManagerServi ...

  2. meltdown 安全漏洞原理是怎么样的?

    Meltdown是2018年初公开的一种严重的计算机安全漏洞,影响了多种处理器,包括英特尔.ARM和某些AMD处理器.其原理基于利用现代CPU的"推测执行"(speculative ...

  3. 批量解压zip文件到指定位置

    话不多说,直接上代码. # coding:utf-8 import zipfile import utils_file n = 21 # 我事先知道我有多少个文件,所以确定为21 for i in r ...

  4. dotnet封装一个配置工具类

    using Microsoft.Extensions.Configuration; namespace web.tools; public class settingHelper { public s ...

  5. 0201-PyTorch0.4.0迁移指南以及代码兼容

    0201-PyTorch0.4.0迁移指南以及代码兼容 目录 一.概要 二.合并Tensor和Variable和类 2.1 Tensor中的type()改变了 2.2 什么时候autograd开始自动 ...

  6. 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)

    大家好,我是老 Z! 上篇文章实现了 MySQL 数据库在基于 KubeSphere 部署的 K8s 集群上的安装部署,部署方式采用了图形化界面这种形式.本文将会介绍如何使用 GitOps 来部署 M ...

  7. HTML标签 b 和 strong 的区别

    <b>标签和<strong>标签都表示加粗,效果通常是一样的: <b>:义演丁真<strong>:义演丁真 类似的还有<em>和<i& ...

  8. Linux系统管理-yum源配置

    一.本地光盘yum源配置 1.创建挂载点 [root@localhost ~]# mkdir /mnt/cdrom 2.配置自动挂载本地光盘 [root@localhost ~]# vim /etc/ ...

  9. ROS入门21讲(2)

    四.创建工作空间与功能包 1.工作空间 工作空间(workspace):是一个存放工程开发相关文件的文件夹(相当于在IDE中创建的工程文件). 包含: src:代码空间(Source Space),放 ...

  10. Einfuehrung in die Kuenstliche Intelligenz学习笔记

    1.Uninformed Search 1.1 State Space of a Problem 1.2 depth of the search tree and fringe of the sear ...