egrep使用grep匹配版本号

Aks*_*hah 3 regex unix awk grep sed

如果我有如下字符串: 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
Run Code Online (Sandbox Code Playgroud)

谢谢!

Vyt*_*nis 7

你可以试试 Perl 正则表达式:

grep -Po "(\d+\.)+\d+"
Run Code Online (Sandbox Code Playgroud)


fed*_*qui 6

您可能可以使用:

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

因此,它将匹配的任何块XX.YY,为的XX任何数量的块,ZZ.KK.TT.依此类推。