2011-05-12 24 views
2

私が始めている仕事の準備として、私はgrepのスキルをリフレッシュしています。`MMMという形式の日付の正規表現です。 DD、YYYY`

MMM. DD, YYYYという形式の日付が出現した場合は、grepを実行したいと思います。

例:Sep. 12, 2007

正規表現私が思いついたとあった:

grep "[[:alpha:]]\{3\}.[[:space:]][([[:digit:]])([[:digit:]]\{2\})],[[:space:]][[:digit:]]\{4\}" file 

マイロジック:三の文字。期間。スペース; 1桁または2桁。カンマ。スペース; 4桁。

それは必要以上に複雑かもしれませんが、本当にどこが間違っているのか見たいだけです。

答えて

0

あなたは.をエスケープしませんでした。(致命的に)あなたは括弧をエスケープして文字通り取られませんでした。 (grepを使用すると、グループ化\(...\)を使用する必要があります。egrepがエスケープされていない括弧を使用しています。)

0

は、あなたがちょうどあなたが間違っていた場所を確認しますか?ここで:

[([[:digit:]])([[:digit:]]\{2\})] 
2

Perlの正規表現は、読みやすく、理解し少し楽かもしれません:

perl -ne 'print if /^\w\w\w\. \d\d, \d\d\d\d$/' somefile 
+0

ちょうど発見「はgrepの-P「^ \ wの\ wの\ wの\ \ D \ dは、\ D。 \ d \ d \ d $ somefileは少なくとも私のgrep(Mac OS)では動作しますが、 –

関連する問題