对以Maven版本号

时间:2018-01-27 15:25:03

标签: bash grep

我正在尝试为文件格式化一个以表格版本号开头的行:

  

X.Y.Z

其中X,Y和Z是介于0和无穷大之间的数字。

例如,感兴趣的线条开始20.2.3

如果该行的第一个字符是数字,则以下内容将返回结果:

grep ^[0-9]

结果是:

  

2 0.2.3`

其中粗体表示grep'匹配'。 但是,这也会匹配我不想要的4000-43行。

所以在我的正则表达式中,我尝试了下面的grep:

  

grep ^ [0-9] + \。[0-9] + \。[0-9]

认为这会匹配以任何数字开头的任何行,后跟另外两个由小数点分隔的数字。但事实并非如此。

如果我尝试:

  

grep ^ [0-9] +

它根本不匹配。

如何修改我的正则表达式以匹配我正在寻找的数字格式?

3 个答案:

答案 0 :(得分:2)

以下内容非常好,只需在\之前添加+

grep "^[0-9]\+\.[0-9]\+\.[0-9]" <filename>

答案 1 :(得分:2)

在BRE(基本正则表达式)模式(默认模式)下使用时,应使用+转义正则表达式\(一个或多个)量词:

grep '^[0-9]\+\.[0-9]\+\.[0-9]' <<<"20.2.3"
20.2.3

否则,为了使其工作 - 使用-E选项启用ERE(扩展正则表达式)模式:

grep -E '^[0-9]+\.[0-9]+\.[0-9]' <<<"20.2.3"
20.2.3

答案 2 :(得分:0)

由于您希望以数字和句点开头但不以句号(.filters开头)的行以清除版本号后面的任何内容:

-o