2011-09-23 56 views
2

如何在文件中列出每個正則表達式的出現次數,其中一行可以多次包含正則表達式?在文件中查找每個出現的正則表達式

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

The result should be: 
FOO3 
FOO4 
FOO2 
FOO9 
FOO5 

在這種情況下,正則表達式將是/FOO./。

grep將返回至少匹配一次的每一行。但那正是我想要的。

+1

請附上您試圖grep命令。 – Sam

回答

7

你試過-o選項:(grep man page

-o,--only匹配顯示匹配 模式的匹配行的唯一部分。

+0

非常感謝。我閱讀手冊,但沒有看到這個選項。 – DrummerB

+1

-o,--only-matching - 僅打印匹配行的匹配(非空)部分,每個這樣的部分位於單獨的輸出行中。 –

+0

如果解決了您的問題,您可以將給定答案中的一個標記爲接受的答案嗎? – Sam

4

使用grep -o FOO.-o:只顯示匹配)

你的正則表達式甚至可以擴展到僅匹配FOO後面跟一個數字,而不是任何字符(.將空白匹配呢!):

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

你的問題並不完全清楚,特別是因爲示例數據是超級通用的。但是,下面是一些可能匹配的模式:

您的模式匹配FOO,後跟任何匹配所有行到末尾的字符。我不認爲你想這樣嘗試這樣的事情:

/FOO[0-9]+/ - 匹配FOO後跟一個或多個數字。

/FOO[^ ]+/ - 匹配FOO後跟任何不是空格的字符。根據您的示例模式,這可能是最佳解決方案。

/FOO[0-9a-zA-Z]+/ - 匹配foo後跟任何字母數字字符

相關問題