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

Regex 查找文件中出现的每个正则表达式,regex,linux,unix,grep,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将返回至少一次匹配的每一行。但这正是我现在想要的。您是否尝试过-o选项:() -o、 --仅匹配仅显示匹配行中匹配的部分 模式 使用grep-o

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

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

The result should be:
FOO3
FOO4
FOO2
FOO9
FOO5
在这种情况下,正则表达式将是/FOO./


Grep将返回至少一次匹配的每一行。但这正是我现在想要的。

您是否尝试过-o选项:()

-o、 --仅匹配仅显示匹配行中匹配的部分 模式


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

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


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

您的模式匹配FOO,后跟将所有内容匹配到行末尾的任何字符。我认为你不想这样,所以试试这样:

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

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


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

请包括您尝试过的grep命令。-o,--仅匹配-仅打印匹配行中匹配的(非空)部分,每个部分在单独的输出行上。
<yourfile grep -o 'FOO[0-9]'