grep -eとgrep -Eオプションの違いは何ですか?

grep -eとgrep -Eオプションの違いは何ですか?

grep -eの違いを理解しようとしていますgrep -E。今grep manpage私は次を得ます:

-E, --拡張正規表現

PATTERNを拡張正規表現として解釈します(下記参照)。

-e モード、 --regexp=モード

- で始まるパターンを保護するのに便利なパターンとしてPATTERNを使用します。

上記の説明は私には理解できません。

それでは、誰かが私に2つexamplesの違いといつどのオプションを使用するべきかを説明できますか?

PS:バージョン:grep(GNU grep)2.10

答え1

-e厳密に言えば、一致するパターンを表すフラグです。-E特定の特殊文字をエスケープする必要があるかどうかを制御します。

man grep-E詳しく説明するには:

Basic vs Extended Regular Expressions
In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their 
special meaning; instead use the backslashed versions \?, \+, \{, \|, \(, and \).

Traditional  egrep  did  not  support  the  {  meta-character, and some egrep 
implementations support \{ instead, so portable scripts should avoid { in grep -E
patterns and should use [{] to match a literal {.

GNU grep -E attempts to support traditional usage by assuming that { is not 
special if it would be the start of an invalid interval specification. 
For example, the command grep -E '{1' searches for the two-character string {1 
instead of reporting a syntax error in the regular expression.  POSIX.2 allows 
this behavior as an extension, but portable scripts should avoid it.

答え2

grep -e複数の文字列を使用して検索することもできます。 3つの'grep -e 'abc' -e 'def' -e '123'文字列のうちの1つが検索されます。abcdef123

grep 'abc\|def\|123'\|where presents と非常によく似ていますorが、読み方が少し明確になることがあります。

最も重要な事実はすでにここに説明されているので、grep -E非常によく似た質問でこのトピックの概要を追加したいと思います。Bashで二重文字を見つける正規表現

答え3

-eこのオプションについて詳しく説明します。-e一般にオプション:

grep PATTERN

そして

grep -e PATTERN

以前の回答とマニュアルページで述べたように、複数の検索パターンがある場合、またはハイフン( - )で始まるパターンが保護されていない限り。

答え4

下記をご覧ください

/延長する

grepは、「基本」、「拡張」、および「perl」の3つのバージョンの正規表現構文を理解しています。 GNU grep では、基本構文と拡張構文の間で使用できる機能に違いはありません。他の実装では、基本正規表現はそれほど強力ではありません。次の説明は拡張正規表現に適用されます。基本正規表現との違いは後で要約されます。 Perl正規表現は、pcresyntax(3)とpcrepattern(3)で文書化された追加機能を提供しますが、すべてのシステムで利用可能なわけではありません。

まあ。

GNU grep では、基本構文と拡張構文の間で使用できる機能に違いはありません。

関連情報