如何使用 shell 脚本和正则表达式从文件名中读取版本号
How to read version number from file name using shell script and regex
我的文件夹中有一个文件,其名称类似于 version1.txt 或 version99.txt。我在一个安装了 GNU 实用程序的 Windows 框上,并且正在从命令提示符执行此操作。目前,我的输出如下所示:
命令:dir | grep version
结果:12/08/2016 04:50 PM 0 version12.txt
我想要 return 本例中的数字 12。
我已经编写了匹配版本 12 的正则表达式(虽然我只需要它匹配 12),但我不知道如何用 sed 读取它(我没有可用的 awk)。这就是我正在尝试的:
dir | grep version | sed "/version[0-9]{2}|version[0-9]/g"
如何只显示版本号?
您可以使用awk
代替grep
来提取版本号:
dir | awk '/version/{gsub(/[^0-9]+/, "", $NF); print $NF}'
12
您还可以使用 sed
:
dir | sed 's/.* version\|\..*//g'
这是一个更简单的替代方法,它删除了 grep 要求:
dir /b version*.txt | sed 's/[^0-9]*//g'
我的文件夹中有一个文件,其名称类似于 version1.txt 或 version99.txt。我在一个安装了 GNU 实用程序的 Windows 框上,并且正在从命令提示符执行此操作。目前,我的输出如下所示:
命令:dir | grep version
结果:12/08/2016 04:50 PM 0 version12.txt
我想要 return 本例中的数字 12。
我已经编写了匹配版本 12 的正则表达式(虽然我只需要它匹配 12),但我不知道如何用 sed 读取它(我没有可用的 awk)。这就是我正在尝试的:
dir | grep version | sed "/version[0-9]{2}|version[0-9]/g"
如何只显示版本号?
您可以使用awk
代替grep
来提取版本号:
dir | awk '/version/{gsub(/[^0-9]+/, "", $NF); print $NF}'
12
您还可以使用 sed
:
dir | sed 's/.* version\|\..*//g'
这是一个更简单的替代方法,它删除了 grep 要求:
dir /b version*.txt | sed 's/[^0-9]*//g'