我有一个像 的字符串/feature/abc-1245_branch_name
,我想从字符串中提取 abc-1245 并将其存储到不同的变量中。
我尝试使用 sed 但效果不佳。
使用awk
(取决于输入字符串的变化程度):
awk -F[_/] '{print $3}' <<<"$string"
Run Code Online (Sandbox Code Playgroud)
如果您希望能够处理更复杂的目录结构,您可以首先使用基本名称
basename "$string" | awk -F_ '{print $1}'
Run Code Online (Sandbox Code Playgroud)
要存储在变量中,请使用命令替换
variable=$(awk -F[_/] '{print $3}' <<<"$string")
Run Code Online (Sandbox Code Playgroud)
string=/feature/abc-1245_branch_name
different_variable=${string%%_*}
different_variable=${different_variable##*/}
printf '%s\n' "$different_variable"
Run Code Online (Sandbox Code Playgroud)
这使用标准参数替换首先删除第一个下划线之后的位,然后是最后一个斜杠之前的位。
${variable%%pattern}
去除最长子串匹配pattern
从端的$variable
。${variable##pattern}
删除最长的子串匹配pattern
从开始的$variable
。如果你知道_branch_name
实际上是什么,
string=/feature/abc-1245_branch_name
different_variable=$( basename "$string" '_branch_name' )
printf '%s\n' "$different_variable"
Run Code Online (Sandbox Code Playgroud)
这将字符串视为路径名(即使它可能不是实际路径名),并用于basename
获取最后一个路径组件(即“文件名”)。该basename
实用程序还能够删除文件名后缀,因此我们使用它来删除已知字符串_branch_name
。
归档时间: |
|
查看次数: |
132 次 |
最近记录: |