grep 正規表現構文に '+' を使用できません。

grep 正規表現構文に '+' を使用できません。

Ubuntu 16.04を使用しています

努力する: grep '.*' file1

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

努力する:grep '.+' file1

出力がありません。

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

答え1

あなたは言わなければなりませんgrep拡張正規表現を使用しています。

grep -E '.+' file1

基準基本正規表現grep(なしで使用-E)は次のとおりです。拡張正規表現 +\{1,\}いくつかの実装(例:GNU)では、\+それを拡張として認識することがあります(常に使用可能)..*

(この特別な場合は、このオプションを使用しないときに正規表現に一致する部分文字列を見つけるgrep -E .+ことと同じです。多くのシステムでは、これと同等のコマンドとして提供されますが、次のようになります。grep -E .-xegrepgrep -Eグラハム 指摘これは役に立たない.)

答え2

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

grep '.\+' file1

答え3

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

関連情報