如果我有如下字符串: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
谢谢!
答案 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+"