提取实际数字而不削减其他数字

提取实际数字而不削减其他数字

我有一个日志文件,正在提取 7 位数字和 5 位数字。 grep -ao '[0-9][ ]\{7\}' /var/log/Bridge.log.1 | sort | uniq -c 这可以工作并提取我的 7 位数字。当我使用这个时,它会给出 5 位数字和 7 位数字的混合。

grep -ao '[0-9][ ]\{5\}' /var/log/Bridge.log.1 | sort | uniq -c

问题是如何在 5 位搜索的末尾添加空格。

答案1

[0-9][ ]\{7\}将匹配一个数字后跟七个空格(使用 GNU grep)。

你可能想要的是类似的东西

grep -o -w -E '[0-9]{7}'

-w将确保您只获得完整的“单词”,即匹配不是单词的子字符串。启用-E扩展正则表达式( 需要{7}\{7\}在基本正则表达式中使用是仅 GNU 扩展,您可能会也可能不会继续使用)。

使用-w相当于

grep -o -E '\<[0-9]{7}\>'

其中\<\>匹配您要查找的“单词”周围的零宽度单词边界。

相关内容