2012-07-23 22 views
1

不ouputting預期的結果,我試圖尋找我的代碼庫以下模式的實例:出現正則表達式正確形成,但在grep的

m_vParts[foo] = 

並伴有不同空白類似的例子。這樣我就可以了這個表達式:

m_vParts\[.*\]\s*=[^=]\s* 

當我測試這個在http://gskinner.com/RegExr/和其他正則表達式測試儀類網站,發現正是我想要的。但是,當我實際grep(或egrep)我沒有得到任何結果。我的猜測是我的正則表達式不適合grep的正則表達式,但我不確定我到底在哪裏。

下面是實際的命令我給:

[e]grep -Irn "m_vParts\[.*\]\s*=[^=]\s*" . 

我既包含單引號和雙引號嘗試。

下面的代碼一個小樣本是示例性的基本代碼的:

pcTab->m_vParts[iLastPart] = pcPart; 
if (m_pcCurrentTab->m_vParts[i]== pcPart) 

我期望的是,第一線將是一個匹配,且第二線不會。

此外,我應該注意到我在Windows 7 x64上使用GnuWin32 grep。

在此先感謝您的任何指導;非常努力避免非自動搜索:)

+0

嗯,'egrep -Irn「m_vParts \ [。* \] \ s * = [^ =] \ s *」.'在我的Ubuntu盒子上打了一針... – 2012-07-23 19:46:12

+0

你說你正在運行這個命令在Windows上。你究竟如何運行它?比如,這是在Bash中,還是在直接的Windows shell中,或者。 。 。 ? – ruakh 2012-07-23 19:47:58

+0

它在Windows外殼中,使用GnuWin32包中的一些Linux工具(如grep)的Windows端口。我想這可能是這個軟件包的一個問題,因爲人們似乎能夠在Linux上獲得預期的結果。 – 2012-07-23 20:00:17

回答

1

只需添加周圍的重新報價:

$ vim 1.txt 
$ egrep 'm_vParts\[.*\]\s*=[^=]\s*' 1.txt 
pcTab->m_vParts[iLastPart] = pcPart; 

正如你所看到的,所有的作品。

+0

對不起,正如我上面提到的,我已經嘗試過,但忘了把它放在原來的帖子。 – 2012-07-23 19:48:58

+0

將此標記爲答案,因爲它是一個正確的正則表達式,以防其他人正在尋找類似的東西。我相信我的問題在於grep工具的Windows端口 – 2012-07-24 11:52:35