egrep使用grep匹配版本号

时间:2014-05-14 15:17:28

标签: regex unix awk sed grep

如果我有如下字符串:DATABASE PATCH FOR EORQ (JAN2014 - 11.2.0.4.1)

我如何匹配版本号?即我想提取11.2.0.4.1。我想避免使用sed和awk,因为该行是任意的,并且将来可能会改变,所以我正在寻找能够匹配包含数字和.的版本字的内容。

我尝试使用egrep如下:egrep -o "[0-9.]{1,}"但它返回

2014

11.2.0.4.3

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用:

$ egrep -o "([0-9]{1,}\.)+[0-9]{1,}" file
11.2.0.4.1
  • ([0-9]{1,}\.)+至少匹配一个[0-9]{1,}块和一个点.
  • [0-9]{1,}匹配[0-9]

因此,这将匹配XX.YY的任何块,XX任意数量的ZZ.KK.TT.块等等。

答案 1 :(得分:3)

您可以尝试使用Perl正则表达式:

grep -Po "(\d+\.)+\d+"