我需要在以下示例中提取字符串:在下面的示例中:
包:project.abc.def
因此我会得到project.abc.def.
我在bash中尝试这个,我相信我有一个正常的表达式可以工作:([^:] *)$.
在我的bash脚本中,我有一个包:project.abc.def作为一个名为apk的变量.现在我如何为正则表达式找到的子字符串分配相同的变量?
来自package:project.abc.def的结果将在apk变量中.和package:project.abc.def最初是在apk变量中?
谢谢!
解决方法
这里不需要正则表达式,只需简单的前缀替换:
$apk="package:project.abc.def" $apk=${apk##package:} project.abc.def
##语法是bash参数扩展之一.而不是#,%可用于修剪结束.有关详细信息,请参见bash手册页的this section.
一些替代品:
$apk=$(echo $apk | awk -F'package:' '{print $2}') $apk=$(echo $apk | sed 's/^package://') $apk=$(echo $apk | cut -d':' -f2)