我正在尝试为文件格式化一个以表格版本号开头的行:
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] +
它根本不匹配。
如何修改我的正则表达式以匹配我正在寻找的数字格式?
答案 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