2010-08-20 54 views
1

我有一個文本文件的Unix grep的正則表達式如何用grep的

$ cat test.log 
SYB-01001 
SYB-18913 
SYB-02445 
SYB-21356 

我想用grep爲01001和18913只什麼方式來做到這一點

我所要的輸出是

SYB-01001 
SYB-18913 
SYB-02445 

我試過,但不知道什麼是錯用它

grep 'SYB-(18913)|0*)' test.log 
+0

認爲你可能需要重新解釋 - 你所期望的輸出並沒有真正匹配了你說你想要的。 – cristobalito 2010-08-20 08:11:33

回答

5

對grep使用「擴展正則表達式」的-E標誌。

例如

grep -E 'SYB-(0|18913)' test.log 

其他的事情需要注意的:

  • 括號必須(您想每打開支架右括號)
  • 0*意味着零個或多個0字符匹配 - 事實上這將匹配一切
+0

簡單明瞭的感謝--E技巧 – Lisa 2010-08-20 08:15:23

0

試一下:

grep 'SYB-\(18913\|0*\)' test.log 

但是你也許不希望0*部分像這樣行事。也許0+更好。

-1

您的括號已排除。嘗試

grep 'SYB-[18913|0*]' test.log 
+1

您確定這是正確的嗎? – ghostdog74 2010-08-20 08:21:17

+0

在Linux Mint上檢查它,得到與問題相同的輸出結果。 – 2010-08-20 08:30:58

+0

'echo「SYB-11111」| grep'SYB- [18913 | 0 *]'' – 2010-08-20 08:34:22