2012-04-05 12 views
0

対のredhatに異なる作業します。GNUの正規表現は、私は次のように一致する任意の文字列をgrepしようとしているWindowsの

#は任意の数字であり、1つ以上の数字がある可能性があります。

ので、以下の文字列が見つかりする必要があります。

ABC-123 
DE-4 
FGHI-56789 

しかし、これが見つからないでください。

A15-B432 

私はこのようないくつかの異なるもの、試してみました:

grep [[:alpha:]]\{2,5\}-[[:digit:]]\+ 

しかし、それは動作しませんでした。

これはredhatのgnu grepです。私のテストでは、gnu grepも使用していたWindowsマシンでgrepを使用しましたが、これはうまくいきました。どちらもバージョン2.5.1と思われます。

答えて

2

で正規表現に囲まれていないことだけで事実である:

$ cat file 
ABC-123 
DE-4 
FGHI-56789 
A15-B432 
$ grep [[:alpha:]]\{2,5\}-[[:digit:]]\+ file 
$ grep -E [[:alpha:]]\{2,5\}-[[:digit:]]\+ file 
ABC-123 
DE-4 
FGHI-56789 

すべて\文字を避けるために私は個人的に''を使用することを好みます:

$ grep -E '[[:alpha:]]{2,5}-[[:digit:]]+' file 
ABC-123 
DE-4 
FGHI-56789 
+0

両方の例が完全に機能しました。 – jgritty

+0

問題ありません。通常、 'grep -E'と同じ' egrep'コマンドがあります。 –

0

どの部分が機能していないのですか?

それはあなたが拡張正規表現のための-E旗必要[:alpha:][:digit:]、または\{2,5\}または引用符

grep '[[:alpha:]]\{2,5\}-[[:digit:]]\+'? 
関連する問題