从文件名中提取版本

San*_*jay -2 linux text-processing filenames

我想从我的构建 zip 文件的名称中提取版本号。

构建名称: build102p12.zip

我想从中提取102p12

我正在使用 linux 环境:rhel 6。

Kus*_*nda 6

您想从字符串中删除子字符串build和。.zipbuild102p12.zip

假设您在 shell 变量中有原始字符串name

name='build102p12.zip'

name="${name#build}"  # remove prefix "build"
name="${name%.zip}"   # remove suffix ".zip"
Run Code Online (Sandbox Code Playgroud)

$name现在将是字符串102p12

有关${parameter#word}${parameter%word}变量替换的更多信息,请参阅您的 shell 手册。


如果你有这条线(没有别的)

build name : build102p12.zip
Run Code Online (Sandbox Code Playgroud)

在文件中buildinfo

$ buildversion="$( grep -oE '[0-9]+p[0-9]+' buildinfo )"
Run Code Online (Sandbox Code Playgroud)

扩展的正则表达式[0-9]+p[0-9]+将匹配任何看起来像NNNpNNN其中每个NNN都是一些数字序列的东西。这假设这仅在文件中发生一次buildinfo