使用 bash 脚本替换变量值中两个通配符之间的字符串

使用 bash 脚本替换变量值中两个通配符之间的字符串

我有一个变量值“Cash_20200413_US_02.dat”,我想将其重命名为“Cash_20200413_US_*.dat”。

所以基本上我想要找到:a)字符串“_”的最后一次出现和b)字符串“。”然后将这两个字符串之间的值替换为“*”

输入=“Cash_20200413_US_02.dat”

输出=“Cash_20200413_US_*.dat”

答案1

鉴于

Input="Cash_20200413_US_02.dat"

您可以使用以下命令获取到最后一个下划线(不包括)的子字符串:

echo "${Input%_*}"

并从最后一个点(排除)开始的子字符串:

echo "${Input/*.}"

将两者结合起来,并在中间加上请求的字符串:

Output="${Input%_*}_*.${Input/*.}"

相关内容