Numbers 从文本文件中的字符串提取版本号

Numbers 从文本文件中的字符串提取版本号,numbers,version,extract,perl,bash,Numbers,Version,Extract,Perl,Bash,想知道是否可以从文本文件的字符串中提取版本号。(Windows和Linux) 例如,文本文件包含 some_soft-9.1.2-windows.zip some_soft-9.2.2-windows.zip some_soft-10.0.1-windows.zip some_soft-10.1.2.3-windows.zip 然后命令的输出应仅获取 9.1.2 9.2.2 10.0.1 10.1.2.3 因此,可以对这些版本号进行处理,以下载应用程序的最新版本或所需版本。使用正则表达式提取

想知道是否可以从文本文件的字符串中提取版本号。(Windows和Linux)

例如,文本文件包含

some_soft-9.1.2-windows.zip
some_soft-9.2.2-windows.zip
some_soft-10.0.1-windows.zip
some_soft-10.1.2.3-windows.zip
然后命令的输出应仅获取

9.1.2
9.2.2
10.0.1
10.1.2.3

因此,可以对这些版本号进行处理,以下载应用程序的最新版本或所需版本。

使用正则表达式提取它们

([0-9]+.){2,}[0-9]+

是的,这是可能的,而且并不难做到。试着做一些关于如何分割字符串的研究。在您的情况下,只需简单地将字符串除以“-”,然后得到第二个元素。

如果可以使用,这一行脚本就可以完成以下任务:

perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' 
示例使用:

$>V=$(perl-pe'($)=/([0-9]+([.][0-9]+)/“echo”a233.Z-0.1.2.3.4..5';perl-pe'($)=/([0-9]+([.][0-9]+)/'
0.1.2.3.4
注意:此命令行提取版本号而不返回回车符


另请参见。

Hi Vlad L.我正在使用与您类似的正则表达式:
perl-pe'($)=/([0-9]+([.][0-9]+)+)/”
。您认为可以简化吗?我花了很多时间试图使用…您认为我们可以使用其他正则表达式吗?干杯;)@olibre抱歉,不能对perl说任何事情。AFAIK Perl有一点不同的正则表达式,但您可以将我的正则表达式与C#一起使用。无论如何,你的正则表达式和我的一样简单:)
$> V=$(perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' <<< 'some_soft-9.1.2-windows.zip')
$> echo "$V"
9.1.2

$> echo 'A2 33. Z-0.1.2.3.4..5' | perl -pe '($_)=/([0-9]+([.][0-9]+)+)/'
0.1.2.3.4