2016-08-26 49 views
1

上的cygwin使用grep grep的逃逸元字符來搜索「EMPLOYEE_ID」用以下條件:使用上的cygwin

  • 未用下劃線緊接着任一空間
  • preceeded,關閉托架,或週期

隨後使用文本的樣品中的正則表達式生成器2.05的作品,但是在grep的使用時,因此不返回結果的表達:

grep -E -r '[^_]employee_id[ \]\.]' ./* 

我不確定這是通過命令行輸入表達式的一些特性,還是與許多正則表達式「方言」之間的差異有關,但我還沒有遇到任何其他逃避字符的方法在我的搜索答案。

有人可以提供正確的grep語法來返回我正在查找的結果嗎?

回答

1

您可以使用:

grep -E -r '(^|[^_])employee_id[] .]' . 
  • (^|[^_])employee_id可以在行開始或任何非下劃線字符開頭。

  • 在角色等級中沒有必要逃避DOT或]。但請記住,關閉]必須緊跟開放[

+0

感謝您的快速反應。第一點很好,我沒想到不需要擺脫這個問題,但這是有道理的。不幸的是,你的解決方案也沒有結果,但我知道有匹配。 – SiliconBadger

+0

我剛剛在您的評論之前更新了它。使用'grep -E -r'(^ | [^ _])employee_id []。]'.' – anubhava

+1

非常有趣!我想知道如果我沒有逃過封閉的支架,如果它會發現有另一個封閉的支架包圍字符類,但它不起作用。我現在看到,封閉的支架必須緊跟在開放支架後面,我沒有想到這一點。謝謝你的幫助! – SiliconBadger