2016-11-06 5 views
0

シェルスクリプトを初めて使用しています。逆参照と区間括弧を使用しています。バックリファレンスとインターバルブラケットはMacOS grepで動作しません

who | grep -G \(o\).*\1 
who | grep -G o\{3\} 

はどちらも何も返さない、私はMacOSXのシエラにログインしていますと、以下のようにgrepの操作を行う際に、whoコマンドの出力は、次に、この

foo  console Nov 3 19:06 
bar  ttys000 Nov 3 19:06 

のようなものです。

何か不足していますか?

+1

'人| grep '0 \ {3 \}' ' –

答えて

1
  • シェルの解釈を避けるために、Regexパターンの前後に引用符を入れると、最初のものが動作します。最初の正規表現パターン、.*

    、貪欲最後oまで、あなたの場合には、それができる限り一致します

    $ grep -Go '\(o\).*\1' <<<'foo  console Nov 3 19:06' 
    oo  console No 
    
  • 第二のパターン、連続して何の3が存在しないためgrep -G o\{3\}が一致しませんでした一致する文字列にoがあります。おそらく、3つの0に一致することを意味していました。再度、事前にシェルの解釈を防ぐために、パターンの周りに引用符を使用します。

    $ grep -Go '0\{3\}' <<<'bar  ttys000 Nov 3 19:06' 
    000 
    
関連する問題