2016-10-22 4 views
1

は私のテストではMac OSで動作していない: 豊か$猫正規表現[^ ..]ここ

abc 
def 
aef 
bde 

richadminsMini foofile:〜豊か$ファイル

​​3210
foofile

richadminsMini:〜rich $ ggrep -V ggrep(GNU grep)2.26 パッケージ化ホームブリュー 著作権(C)2016 Free Software Foundationが、株式会社

richadminsMini:〜豊か$ ggrep 'B'

abc 
bde 

richadminsMini foofile:〜豊かな$のggrep '' foofile

abc 
aef 

richadminsMini:~ rich$ ggrep '[ab]' foofile 
abc 
aef 
bde 
richadminsMini:~ rich$ ggrep '[^ab]' foofile 
abc 
def 
aef 
bde 

私は行1,3、および4を除外すると予想しました... 私のシェルはbashです。どうしたの?

答えて

2

grep -v '[ab]'で正の表現を反転するか、正規表現を完全一致に変更してください(grep -E '^([^ab]+)$')。

問題は、aまたはbを持たないものの部分一致を探していることです。たとえば、abcの場合は 'c'と一致するので、行が含まれます。

デフォルトのプラットフォームgrepを使用できます。それは問題ではありません。

+1

Jamesonが書いたものに追加するだけで、あなたのggrepは "どこかの非Aか非B文字をどこかどこにでも持つ行"を探しています。返されなかった唯一の種類の行は、 "a"、 "aa"、 "baba"などのようになります。 – Mort