【发布时间】:2014-09-29 15:12:06
【问题描述】:
我有一个 bash 脚本,我可以在 linux 和 AIX 服务器上复制并运行它。
该脚本获取一个代表文件名的“名称”参数,我需要通过正则表达式操作此名称(目的无关紧要,很难解释)。
我需要从名称参数开始,直到第一个“-”字符后跟一个数字,然后将它与最后一个“。”连接起来。直到字符串结尾的字符。
例如:
名称:abcd-efg-1.23.4567-8.jar 将变为:abcd-efg.jar
名称:abc123-abc3.jar 将保留:abc123-abc3.jar
名称:abc-890.jar 将变为:abc.jar
我尝试了以下几种变体:
name=$1
regExpr="^(.*?)-\d.*\.(.*?)$/g"
echo $name
echo $(printf ${name} | sed -e $regExpr)
我也不能使用sed -r(在某些示例中可以看到),因为 AIX sed 不支持 -r 标志。
最后一行当然是问题;我想我需要以某种方式使用 $1 + $2 占位符,但我似乎无法正确使用。
如何更改我的正则表达式,使其符合我的要求?
【问题讨论】: