如何使用grep从文件中检索匹配的文本?

时间:2015-11-24 19:12:05

标签: regex linux grep

我有一个这样的txt文件:

asdfasdf
ffaCover 91adf
ffffa

我想使用grep或一些linux工具捕获'Cover'后空格后的1或2位数。在某些编程语言中,我会使用正则表达式库匹配/ ^ Cover(\ d \ d?)$ /。然后会有一些方法来获得括号内的1或2位数。有没有办法用grep做到这一点?

2 个答案:

答案 0 :(得分:2)

只需输入grep -oP

grep -Po 'Cover \K[0-9]{1,2}'
91
PCRE正则表达式中的

\K会重置以前匹配的所有信息。

答案 1 :(得分:2)

我总是这样做:

 grep -Po '(?<=Cover\s)(\d\d?)'

-o的{​​{1}}选项使其仅打印出模式的匹配部分,其中不包括零宽度的lookbehind断言。

但是,之前我不知道anubhava的答案中的grep选项,这似乎更清晰。