如何列出文件中每次出现的正则表达式,其中一行可以多次包含正则表达式?
Example:
XXXXXXXXXX FOO3 XXXX FOO4 XXX
XXX FOO2 XXXX FOO9 XXXXXX FOO5
The result should be:
FOO3
FOO4
FOO2
FOO9
FOO5
在这种情况下,正则表达式将是/FOO./。
Grep将返回至少匹配一次的每一行。但那就是我想要的。
答案 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]'