我有一个日志文件,正在提取 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}\>'
其中\<
和\>
匹配您要查找的“单词”周围的零宽度单词边界。