gpt4 book ai didi

regex - 从文件名中获取紧接在文件扩展名之前的数字,以及文件名中的其他数字

转载 作者:行者123 更新时间:2023-11-29 09:26:24 25 4
gpt4 key购买 nike

我正在尝试提取 bash 脚本中文件扩展名之前的最后一个数字。所以格式会有所不同,但它将是数字和字母的某种组合,最后一个字符始终是数字。我需要提取这些数字并将它们存储在一个变量中。

格式一般是:

sdflkej10_sdlkei450_sdlekr_1.txt

我只想将最后一位数字 1 存储到一个变量中。

我将使用它来遍历大量文件,最后一个数字将达到两位数和三位数。

所以对于这个文件:

kej10_sdlkei450_sdlekr_310.txt

我需要返回 310。

字母数字字符和下划线的数量因每个文件而异,但我想要的数字始终紧接在 .txt 扩展名之前和下划线之后。

我试过:

bname=${f%%.*}
number=$(echo $bname | tr -cd '[[:digit:]]')

但这会返回所有数字。

如果我尝试

number = $(echo $(bname -2) it changes the number it returns.

我遇到的问题主要与可变性有关,而且我被要求在 bash 中这样做。任何帮助将不胜感激。

最佳答案

regex='([0-9]+)\.[^.]*$'
[[ $file =~ $regex ]] && number=${BASH_REMATCH[1]}

这使用了 bash 被低估的 =~ 正则表达式运算符,它将匹配项存储在名为 BASH_REMATCH 的数组中。

关于regex - 从文件名中获取紧接在文件扩展名之前的数字,以及文件名中的其他数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com