2013-05-06 107 views
-1

我找到了解決How do I get GNU grep to match exactly "H" and not things that just start with "H"?感謝肯特使用下列內容:支持正則表達式的GNU grep。

grep -o '\bH\b'|wc -l 

,但我需要支持正則表達式,所以像

grep -o '\bH*\b'|wc -l 

應符合喜歡你好的東西,嗨,等支持所有的正則表達式。

我認爲-e選項可以做到這一點,但它不起作用。有人有主意嗎?

+2

'-e'只是讓你指定一個或多個模式來匹配。雖然我明白你要完成什麼,但問你是否可以擁有「支持正則表達式的GNU grep」有點像問你是否可以買一輛能驅動的汽車:) – dimo414 2013-05-06 22:55:06

+0

'\ bH \ b'**是* *一個有效的正則表達式,它恰好不會使用任何通配符或量詞。 – tink 2013-05-06 23:05:39

回答

1

試圖改變

grep -o '\bH*\b'|wc -l 

grep -oP '\bH.*?\b'|wc -l 

H*將匹配H HH HHH HHH or empty string

\bH.*?\b將匹配H Hi Hallo Hello H_x_手段,其次是無詞邊界字符H,直到下一個\b

,如果你只是想匹配的字母,使用\bH[a-zA-Z]*\b

編輯

添加例如:

kent$ echo "H Hfoo Hbar xafHHH"|grep -Po '\bH.*?\b' 
H 
Hfoo 
Hbar 
+0

這是否支持所有的正則表達式? – Oujk 2013-05-06 22:54:55

+0

@Oujk你被正則表達式和glob混淆了。 'ls foo *'列出所有以'foo'開頭的文件,它是glob的。但是,如果你說正則表達式,'foo *'匹配'foo,foooo,fooooooooo,foo'你可以谷歌的一些正則表達式教程獲得一些基本的正則表達式的知識。 – Kent 2013-05-06 23:00:13

+0

我想我很想明白,謝謝。 – Oujk 2013-05-06 23:05:54