2011-04-11 65 views
3

例如,我匹配奇數個「a」。 所以「helloaaa」應該匹配,而「helloaaaa」不應該匹配。如何僅在匹配行末使用grep匹配奇數個字符

我也在bash上試過「(aa)* a $」,有和沒有-E選項。

+0

那麼你的問題是什麼?你忘了實際上問一個問題... – 2011-04-11 14:10:14

+0

我需要一個正則表達式,它將匹配在行尾具有奇數個a的字符串。 – 2011-04-11 14:12:01

回答

3

您的問題是helloaaaa因爲最後三個a S的比賽:

helloaaaa 
     === 

爲了避免這種情況,你需要確保前一個字符不是a

grep -E '[^a](aa)*a$' filename 

這裏我假設這條線不完全是a s。如果整行可以是a s,那麼你可以使用這個正則表達式代替:

grep -E '(^|[^a])(aa)*a$' filename 
+0

不適用於我。這與你一起工作嗎? – 2011-04-11 14:14:01

+0

是的,它適用於我測試的所有示例。你能提供一個它不起作用的例子,你看到這個例子和你期望看到什麼? – 2011-04-11 14:19:26

+0

我確實嘗試過這種表達方式。問題是我使用雙引號而不是單引號。感謝您及時的回覆。 – 2011-04-11 14:30:20