查找文件中每次出现的正则表达式

时间:2011-09-23 15:49:03

标签: regex linux unix grep

如何列出文件中每次出现的正则表达式,其中一行可以多次包含正则表达式?

Example:
XXXXXXXXXX FOO3 XXXX FOO4 XXX
XXX FOO2 XXXX FOO9 XXXXXX FOO5

The result should be:
FOO3
FOO4
FOO2
FOO9
FOO5

在这种情况下,正则表达式将是/FOO./。

Grep将返回至少匹配一次的每一行。但那就是我想要的。

3 个答案:

答案 0 :(得分:7)

您是否尝试过-o选项:(grep man page

  

-o, - only-matching仅显示匹配行的匹配部分   PATTERN。

答案 1 :(得分:5)

您的问题并不完全清楚,特别是因为示例数据是超级通用的。但是,这里有一些可能匹配的模式:

您的模式与FOO匹配,后跟任何与所有行匹配的字符。我不认为你想要那样尝试这样的事情:

/FOO[0-9]+/ - 匹配FOO后跟一个或多个数字。

/FOO[^ ]+/ - 匹配FOO,后跟任何不是空格的字符。鉴于您的示例模式,这可能是最佳解决方案。

/FOO[0-9a-zA-Z]+/ - 匹配FOO后跟任何字母数字字符

答案 2 :(得分:4)

使用grep -o FOO.-o:仅显示匹配)

您的正则表达式甚至可以扩展为仅匹配FOO后跟一个数字,而不是任何字符(.也匹配空格!):

<yourfile grep -o 'FOO[0-9]'