正则表达式在bash中冒号后提取字符串

pro*_*007 5 regex bash

我需要:在下面的示例中提取字符串:

package:project.abc.def

我会得到project.abc.def的结果.

我在bash中尝试这个,我相信我有一个正常的表达方式:([^:]*)$.

在我的bash脚本中,我有package:project.abc.def一个名为变量的变量apk.现在我如何为正则表达式找到的子字符串分配相同的变量?

凡从结果package:project.abc.def将在apk变量.并且package:project.abc.def最初是在apk变量?

谢谢!

gva*_*kov 7

这里不需要正则表达式,只需简单的前缀替换:

$ apk="package:project.abc.def"
$ apk=${apk##package:}
project.abc.def
Run Code Online (Sandbox Code Playgroud)

##语法是bash参数扩展之一.而不是#,%可用于修剪结束.有关详细信息,请参阅bash手册页的此部分.

一些替代品:

$ apk=$(echo $apk | awk -F'package:' '{print $2}')
$ apk=$(echo $apk | sed 's/^package://')
$ apk=$(echo $apk | cut -d':' -f2)
Run Code Online (Sandbox Code Playgroud)