grep 正規表現構文で「+」が機能しない

grep 正規表現構文で「+」が機能しない

私はUbuntu 16.04を使用しています

試しています: grep '.*' file1

出力: file nu-mber o-ne second string

試しています:grep '.+' file1

出力がない

なぜプラスが機能しないのですか?

答え1

伝える必要があるgrep拡張正規表現を使用しています:

grep -E '.+' file1

標準基本的な正規表現grepwithoutで使用される場合-E)同等の拡張正規表現 +演算子は、\{1,\}一部の実装 (GNU など) では\+拡張機能として認識されます (常に を使用できます..*)。

(この特定のケースでは、オプションを使用しない場合に正規表現に一致する部分文字列を探しているため、はとgrep -E .+同等であることに注意してください。多くのシステムではは と同等のコマンドとして提供されていますが、grep -E .-xegrepgrep -Eグレアム 指摘しているこれは廃止

答え2

GNU grep (Ubuntu のデフォルト) では、バックスラッシュを使用して拡張動作を有効にすることもできます。例:

grep '.\+' file1

答え3

+ は拡張正規表現メタ文字だと思います。 を使用してみてくださいegrep

関連情報