在 bash 中的最后一个所需字符处拆分字符串
Split string on last desired character in bash
我有一个这样命名的文件:my-file-1.2.0.jar
我想通过拆分最后一个 -
来提取此文件的版本。
因此我会有以下输出:1.2.0.jar
如果可以使用相同的命令获得此输出,我也想摆脱 .jar:1.2.0
如何使用 bash 实现?
使用参数扩展:
#! /bin/bash
filename=my-file-1.2.0.jar
version=${filename##*-}
version=${version%.jar}
echo "$version"
##
从左边删除最大的匹配模式。 %
从右侧删除最短的匹配模式(但 .jar
不包含通配符,因此使用 %%
进行最长匹配同样有效)。
这是使用 extglob
一步完成此操作的方法:
shopt -s extglob
s='my-file-1.2.0.jar'
echo "${s//+(.jar|*-)}"
1.2.0
我有一个这样命名的文件:my-file-1.2.0.jar
我想通过拆分最后一个 -
来提取此文件的版本。
因此我会有以下输出:1.2.0.jar
如果可以使用相同的命令获得此输出,我也想摆脱 .jar:1.2.0
如何使用 bash 实现?
使用参数扩展:
#! /bin/bash
filename=my-file-1.2.0.jar
version=${filename##*-}
version=${version%.jar}
echo "$version"
##
从左边删除最大的匹配模式。 %
从右侧删除最短的匹配模式(但 .jar
不包含通配符,因此使用 %%
进行最长匹配同样有效)。
这是使用 extglob
一步完成此操作的方法:
shopt -s extglob
s='my-file-1.2.0.jar'
echo "${s//+(.jar|*-)}"
1.2.0