使用grep扩展正则表达式筛选指定纯数字行的问题
grep扩展正则表达式筛选指定纯数字行的问题
嗨,我看你想用grep的扩展正则来提取那些纯数字的行(就是那些单独的24),不过你当前写的正则表达式有点小问题,咱们来调整一下:
首先看你现在用的命令:
grep -E '^ [0..9]'
这里的问题有两个:一是[0..9]的写法不对,正则里表示数字范围应该用[0-9];二是这个表达式只匹配开头有两个空格,后面跟一个数字的行,完全不符合你要筛选纯数字行的需求。
针对你的输入内容:
24 -38.54270131 24 -38.54085331 24 -38.53603119 24 -38.53427780 24 -38.53396521 24 -38.53226876 24 -38.53211376
要得到只包含纯数字的行(也就是所有的24),你需要用能精准匹配整行都是数字的正则,推荐用这个命令:
grep -E '^[0-9]+$'
我给你解释下这个正则的含义:
^:匹配一行的开头[0-9]+:匹配一个或多个阿拉伯数字(+表示至少出现一次)$:匹配一行的结尾
这样组合起来,就只会匹配那些从开头到结尾全是数字的行,刚好符合你想要的预期输出:
24 24 24 24 24 24 24
如果你的目标行可能有前导空格?不过看你的输入和预期,这些24都是单独占一行没有空格的,所以上面的命令完全适用。要是有前导空格的情况,你可以把正则改成^ *[0-9]+$,其中*匹配零个或多个空格。
备注:内容来源于stack exchange,提问作者Another.Chemist
相关产品推荐
相关产品推荐

